/*
 * Copyright (c) 2018 Tencent. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing,
 * software distributed under the License is distributed on an
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 * KIND, either express or implied.  See the License for the
 * specific language governing permissions and limitations
 * under the License.
 */
const AbstractModel = require("../../common/abstract_model");

/**
 * Create task return format.
 * @class
 */
class CreateTaskResult extends  AbstractModel {
    constructor(){
        super();

        /**
         * Task ID

         * @type {string || null}
         */
        this.TaskId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TaskId = 'TaskId' in params ? params.TaskId : null;

    }
}

/**
 * ListDownstreamOpsTasks request structure.
 * @class
 */
class ListDownstreamOpsTasksRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Task ID		
         * @type {string || null}
         */
        this.TaskId = null;

        /**
         * Project ID.
		
         * @type {string || null}
         */
        this.ProjectId = null;

        /**
         * Page number
         * @type {string || null}
         */
        this.PageNumber = null;

        /**
         * Pagination size.
         * @type {string || null}
         */
        this.PageSize = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TaskId = 'TaskId' in params ? params.TaskId : null;
        this.ProjectId = 'ProjectId' in params ? params.ProjectId : null;
        this.PageNumber = 'PageNumber' in params ? params.PageNumber : null;
        this.PageSize = 'PageSize' in params ? params.PageSize : null;

    }
}

/**
 * RerunTaskInstancesAsync response structure.
 * @class
 */
class RerunTaskInstancesAsyncResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Asynchronous ID returned by the batch rerun operation. You can use the GetAsyncJob API to retrieve detailed execution information.
         * @type {OpsAsyncResponse || null}
         */
        this.Data = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Data) {
            let obj = new OpsAsyncResponse();
            obj.deserialize(params.Data)
            this.Data = obj;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * UpdateCodeFile request structure.
 * @class
 */
class UpdateCodeFileRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Project ID.
         * @type {string || null}
         */
        this.ProjectId = null;

        /**
         * Code file ID. the parameter value comes from the CreateCodeFile API response.
         * @type {string || null}
         */
        this.CodeFileId = null;

        /**
         * Specifies the code file configuration.
         * @type {CodeFileConfig || null}
         */
        this.CodeFileConfig = null;

        /**
         * Specifies the content of the code file.
         * @type {string || null}
         */
        this.CodeFileContent = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.ProjectId = 'ProjectId' in params ? params.ProjectId : null;
        this.CodeFileId = 'CodeFileId' in params ? params.CodeFileId : null;

        if (params.CodeFileConfig) {
            let obj = new CodeFileConfig();
            obj.deserialize(params.CodeFileConfig)
            this.CodeFileConfig = obj;
        }
        this.CodeFileContent = 'CodeFileContent' in params ? params.CodeFileContent : null;

    }
}

/**
 * Alarm information list.
 * @class
 */
class ListAlarmMessages extends  AbstractModel {
    constructor(){
        super();

        /**
         * Page number.
         * @type {number || null}
         */
        this.PageNumber = null;

        /**
         * Pagination size.
         * @type {number || null}
         */
        this.PageSize = null;

        /**
         * Total number of entries
         * @type {number || null}
         */
        this.TotalCount = null;

        /**
         * Total pages
         * @type {number || null}
         */
        this.TotalPageNumber = null;

        /**
         * Alarm information list.
         * @type {Array.<AlarmMessage> || null}
         */
        this.Items = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.PageNumber = 'PageNumber' in params ? params.PageNumber : null;
        this.PageSize = 'PageSize' in params ? params.PageSize : null;
        this.TotalCount = 'TotalCount' in params ? params.TotalCount : null;
        this.TotalPageNumber = 'TotalPageNumber' in params ? params.TotalPageNumber : null;

        if (params.Items) {
            this.Items = new Array();
            for (let z in params.Items) {
                let obj = new AlarmMessage();
                obj.deserialize(params.Items[z]);
                this.Items.push(obj);
            }
        }

    }
}

/**
 * CreateResourceFile request structure.
 * @class
 */
class CreateResourceFileRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Project ID.
         * @type {string || null}
         */
        this.ProjectId = null;

        /**
         * Resource file name. should be consistent with the uploaded file name.
         * @type {string || null}
         */
        this.ResourceName = null;

        /**
         * Bucket name. can be obtained from the GetResourceCosPath api.
         * @type {string || null}
         */
        this.BucketName = null;

        /**
         * BucketName specifies the cos storage bucket region.
         * @type {string || null}
         */
        this.CosRegion = null;

        /**
         * Upload path for resource files in the project. value example: /wedata/qxxxm/. root directory, please use /.
         * @type {string || null}
         */
        this.ParentFolderPath = null;

        /**
         * -Upload file and manual entry are two methods, choose one. if both are provided, the sequence is file > manual entry.
-The manually entered value must be an existing cos path. /datastudio/resource/ is the fixed prefix. projectId is the project ID. import a specific value. parentFolderPath is the folder path. name is the file name. value example: /datastudio/resource/projectId/parentFolderPath/name. 

         * @type {string || null}
         */
        this.ResourceFile = null;

        /**
         * Bundle Client ID.
         * @type {string || null}
         */
        this.BundleId = null;

        /**
         * bundle client info.
         * @type {string || null}
         */
        this.BundleInfo = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.ProjectId = 'ProjectId' in params ? params.ProjectId : null;
        this.ResourceName = 'ResourceName' in params ? params.ResourceName : null;
        this.BucketName = 'BucketName' in params ? params.BucketName : null;
        this.CosRegion = 'CosRegion' in params ? params.CosRegion : null;
        this.ParentFolderPath = 'ParentFolderPath' in params ? params.ParentFolderPath : null;
        this.ResourceFile = 'ResourceFile' in params ? params.ResourceFile : null;
        this.BundleId = 'BundleId' in params ? params.BundleId : null;
        this.BundleInfo = 'BundleInfo' in params ? params.BundleInfo : null;

    }
}

/**
 * Describes the basic attribute information of the task.
 * @class
 */
class TaskBaseAttribute extends  AbstractModel {
    constructor(){
        super();

        /**
         * Task ID

         * @type {string || null}
         */
        this.TaskId = null;

        /**
         * Specifies the task type ID.

* 21:JDBC SQL
* 23:TDSQL-PostgreSQL
* 26:OfflineSynchronization
* 30:Python
* 31:PySpark
* 33:Impala
* 34:Hive SQL
* 35:Shell
* 36:Spark SQL
* 38:Shell Form Mode
* 39:Spark
* 40:TCHouse-P
* 41:Kettle
* 42:Tchouse-X
* 43:TCHouse-X SQL
* 46:DLC Spark
* 47:TiOne
* 48:Trino
* 50:DLC PySpark
* 92:MapReduce
* 130:Branch Node
* 131:Merged Node
* 132:Notebook
* 133:SSH
* 134:StarRocks
* 137:For-each
* 138:Setats SQL
         * @type {number || null}
         */
        this.TaskTypeId = null;

        /**
         * Workflow ID.

         * @type {string || null}
         */
        this.WorkflowId = null;

        /**
         * Task name.

         * @type {string || null}
         */
        this.TaskName = null;

        /**
         * Last save version number.

         * @type {string || null}
         */
        this.TaskLatestVersionNo = null;

        /**
         * Last submit version number.

         * @type {string || null}
         */
        this.TaskLatestSubmitVersionNo = null;

        /**
         * Workflow name.


         * @type {string || null}
         */
        this.WorkflowName = null;

        /**
         * Task Status:

* N: New
* Y: Scheduling
* F: Offline
* O: Paused
* T: Offlining (in the process of being taken offline)
* INVALID: Invalid

         * @type {string || null}
         */
        this.Status = null;

        /**
         * Latest submission status of the task. Specifies whether it has been submitted: true/false.
         * @type {boolean || null}
         */
        this.Submit = null;

        /**
         * Task creation time. example: 2022-02-12 11:13:41.

         * @type {string || null}
         */
        this.CreateTime = null;

        /**
         * Last update time. example: 2025-08-13 16:34:06.
         * @type {string || null}
         */
        this.LastUpdateTime = null;

        /**
         * Last Updated By (Name).
         * @type {string || null}
         */
        this.LastUpdateUserName = null;

        /**
         * Last operation time.

         * @type {string || null}
         */
        this.LastOpsTime = null;

        /**
         * Last operator name.
         * @type {string || null}
         */
        this.LastOpsUserName = null;

        /**
         * Task owner ID.
         * @type {string || null}
         */
        this.OwnerUin = null;

        /**
         * Task description

         * @type {string || null}
         */
        this.TaskDescription = null;

        /**
         * Last Updated User ID

         * @type {string || null}
         */
        this.UpdateUserUin = null;

        /**
         * Created By User ID

         * @type {string || null}
         */
        this.CreateUserUin = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TaskId = 'TaskId' in params ? params.TaskId : null;
        this.TaskTypeId = 'TaskTypeId' in params ? params.TaskTypeId : null;
        this.WorkflowId = 'WorkflowId' in params ? params.WorkflowId : null;
        this.TaskName = 'TaskName' in params ? params.TaskName : null;
        this.TaskLatestVersionNo = 'TaskLatestVersionNo' in params ? params.TaskLatestVersionNo : null;
        this.TaskLatestSubmitVersionNo = 'TaskLatestSubmitVersionNo' in params ? params.TaskLatestSubmitVersionNo : null;
        this.WorkflowName = 'WorkflowName' in params ? params.WorkflowName : null;
        this.Status = 'Status' in params ? params.Status : null;
        this.Submit = 'Submit' in params ? params.Submit : null;
        this.CreateTime = 'CreateTime' in params ? params.CreateTime : null;
        this.LastUpdateTime = 'LastUpdateTime' in params ? params.LastUpdateTime : null;
        this.LastUpdateUserName = 'LastUpdateUserName' in params ? params.LastUpdateUserName : null;
        this.LastOpsTime = 'LastOpsTime' in params ? params.LastOpsTime : null;
        this.LastOpsUserName = 'LastOpsUserName' in params ? params.LastOpsUserName : null;
        this.OwnerUin = 'OwnerUin' in params ? params.OwnerUin : null;
        this.TaskDescription = 'TaskDescription' in params ? params.TaskDescription : null;
        this.UpdateUserUin = 'UpdateUserUin' in params ? params.UpdateUserUin : null;
        this.CreateUserUin = 'CreateUserUin' in params ? params.CreateUserUin : null;

    }
}

/**
 * UpdateTask request structure.
 * @class
 */
class UpdateTaskRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Project ID.
         * @type {string || null}
         */
        this.ProjectId = null;

        /**
         * Task ID
         * @type {string || null}
         */
        this.TaskId = null;

        /**
         * Describes the basic attributes of the task.
         * @type {UpdateTaskBrief || null}
         */
        this.Task = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.ProjectId = 'ProjectId' in params ? params.ProjectId : null;
        this.TaskId = 'TaskId' in params ? params.TaskId : null;

        if (params.Task) {
            let obj = new UpdateTaskBrief();
            obj.deserialize(params.Task)
            this.Task = obj;
        }

    }
}

/**
 * ListDownstreamTaskInstances response structure.
 * @class
 */
class ListDownstreamTaskInstancesResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Direct downstream instance list.
         * @type {TaskInstancePage || null}
         */
        this.Data = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Data) {
            let obj = new TaskInstancePage();
            obj.deserialize(params.Data)
            this.Data = obj;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Resource folder details.
 * @class
 */
class ResourceFolder extends  AbstractModel {
    constructor(){
        super();

        /**
         * Resource folder ID.
         * @type {string || null}
         */
        this.FolderId = null;

        /**
         * Creator ID.
         * @type {string || null}
         */
        this.CreateUserUin = null;

        /**
         * Creator's name.
         * @type {string || null}
         */
        this.CreateUserName = null;

        /**
         * Specifies the folder path.
         * @type {string || null}
         */
        this.FolderPath = null;

        /**
         * Folder name.
         * @type {string || null}
         */
        this.FolderName = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.FolderId = 'FolderId' in params ? params.FolderId : null;
        this.CreateUserUin = 'CreateUserUin' in params ? params.CreateUserUin : null;
        this.CreateUserName = 'CreateUserName' in params ? params.CreateUserName : null;
        this.FolderPath = 'FolderPath' in params ? params.FolderPath : null;
        this.FolderName = 'FolderName' in params ? params.FolderName : null;

    }
}

/**
 * UpdateWorkflowFolder response structure.
 * @class
 */
class UpdateWorkflowFolderResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Specifies the update folder result. if the update fails, an error will be reported.
         * @type {UpdateFolderResult || null}
         */
        this.Data = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Data) {
            let obj = new UpdateFolderResult();
            obj.deserialize(params.Data)
            this.Data = obj;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * UpdateWorkflowFolder request structure.
 * @class
 */
class UpdateWorkflowFolderRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Project ID.
         * @type {string || null}
         */
        this.ProjectId = null;

        /**
         * Folder ID. obtain through the ListWorkflowFolders API.
         * @type {string || null}
         */
        this.FolderId = null;

        /**
         * Specifies the folder name after update.
         * @type {string || null}
         */
        this.FolderName = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.ProjectId = 'ProjectId' in params ? params.ProjectId : null;
        this.FolderId = 'FolderId' in params ? params.FolderId : null;
        this.FolderName = 'FolderName' in params ? params.FolderName : null;

    }
}

/**
 * ListTaskVersions request structure.
 * @class
 */
class ListTaskVersionsRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Project ID.
         * @type {string || null}
         */
        this.ProjectId = null;

        /**
         * Task ID
         * @type {string || null}
         */
        this.TaskId = null;

        /**
         * SAVE version.
SUBMIT version.
Defaults to SAVE.
         * @type {string || null}
         */
        this.TaskVersionType = null;

        /**
         * Specifies the data page number of the request. default value is 1. valid values: equal to or greater than 1.
         * @type {number || null}
         */
        this.PageNumber = null;

        /**
         * Specifies the number of data records displayed per page. default: 10. value range: 10 to 200.
         * @type {number || null}
         */
        this.PageSize = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.ProjectId = 'ProjectId' in params ? params.ProjectId : null;
        this.TaskId = 'TaskId' in params ? params.TaskId : null;
        this.TaskVersionType = 'TaskVersionType' in params ? params.TaskVersionType : null;
        this.PageNumber = 'PageNumber' in params ? params.PageNumber : null;
        this.PageSize = 'PageSize' in params ? params.PageSize : null;

    }
}

/**
 * GetCodeFile request structure.
 * @class
 */
class GetCodeFileRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Project ID.
         * @type {string || null}
         */
        this.ProjectId = null;

        /**
         * Code file ID. the parameter value comes from the CreateCodeFile API response.
         * @type {string || null}
         */
        this.CodeFileId = null;

        /**
         * true: return file content and configuration. false: only return configuration message. default false.
         * @type {boolean || null}
         */
        this.IncludeContent = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.ProjectId = 'ProjectId' in params ? params.ProjectId : null;
        this.CodeFileId = 'CodeFileId' in params ? params.CodeFileId : null;
        this.IncludeContent = 'IncludeContent' in params ? params.IncludeContent : null;

    }
}

/**
 * Retrieve the resource file list item.
 * @class
 */
class ResourceFileItem extends  AbstractModel {
    constructor(){
        super();

        /**
         * Resource file ID.
         * @type {string || null}
         */
        this.ResourceId = null;

        /**
         * Resource file name.
         * @type {string || null}
         */
        this.ResourceName = null;

        /**
         * Specifies the resource file type.
         * @type {string || null}
         */
        this.FileExtensionType = null;

        /**
         * Resource path
         * @type {string || null}
         */
        this.LocalPath = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.ResourceId = 'ResourceId' in params ? params.ResourceId : null;
        this.ResourceName = 'ResourceName' in params ? params.ResourceName : null;
        this.FileExtensionType = 'FileExtensionType' in params ? params.FileExtensionType : null;
        this.LocalPath = 'LocalPath' in params ? params.LocalPath : null;

    }
}

/**
 * Update task object input parameters.
 * @class
 */
class UpdateTaskBrief extends  AbstractModel {
    constructor(){
        super();

        /**
         * Describes the basic attributes of the task.
         * @type {UpdateTaskBaseAttribute || null}
         */
        this.TaskBaseAttribute = null;

        /**
         * Task configurations.
         * @type {TaskConfiguration || null}
         */
        this.TaskConfiguration = null;

        /**
         * Task scheduling configuration.
         * @type {TaskSchedulerConfiguration || null}
         */
        this.TaskSchedulerConfiguration = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.TaskBaseAttribute) {
            let obj = new UpdateTaskBaseAttribute();
            obj.deserialize(params.TaskBaseAttribute)
            this.TaskBaseAttribute = obj;
        }

        if (params.TaskConfiguration) {
            let obj = new TaskConfiguration();
            obj.deserialize(params.TaskConfiguration)
            this.TaskConfiguration = obj;
        }

        if (params.TaskSchedulerConfiguration) {
            let obj = new TaskSchedulerConfiguration();
            obj.deserialize(params.TaskSchedulerConfiguration)
            this.TaskSchedulerConfiguration = obj;
        }

    }
}

/**
 * ListOpsWorkflows request structure.
 * @class
 */
class ListOpsWorkflowsRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Project ID.

         * @type {string || null}
         */
        this.ProjectId = null;

        /**
         * Page number
         * @type {number || null}
         */
        this.PageNumber = null;

        /**
         * Pagination size.
         * @type {number || null}
         */
        this.PageSize = null;

        /**
         * Folder ID
         * @type {string || null}
         */
        this.FolderId = null;

        /**
         * Workflow Status Filter

* ALL_RUNNING: All workflows are running (scheduled)

* ALL_FREEZED: All workflows are paused

* ALL_STOPPED: All workflows are offline

* PART_RUNNING: Some workflows are running (partially scheduled)

* ALL_NO_RUNNING: No workflows are running (unscheduled)

* ALL_INVALID: All workflows are invalid
         * @type {string || null}
         */
        this.Status = null;

        /**
         * Owner ID
         * @type {string || null}
         */
        this.OwnerUin = null;

        /**
         * Workflow type filter criteria. supported values: Cycle or Manual. default: Cycle.
         * @type {string || null}
         */
        this.WorkflowType = null;

        /**
         * Workflow keyword-based filtering supports fuzzy matching of workflow Id/name.
         * @type {string || null}
         */
        this.KeyWord = null;

        /**
         * Sort item. Options: CreateTime, TaskCount.
         * @type {string || null}
         */
        this.SortItem = null;

        /**
         * Sorting method, DESC or ASC, uppercase.
         * @type {string || null}
         */
        this.SortType = null;

        /**
         * CreatorId. specifies the id of the creator.
         * @type {string || null}
         */
        this.CreateUserUin = null;

        /**
         * Update time. format: yyyy-MM-dd HH:MM:ss.
         * @type {string || null}
         */
        this.ModifyTime = null;

        /**
         * Creation time. format: yyyy-MM-dd HH:MM:ss.
         * @type {string || null}
         */
        this.CreateTime = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.ProjectId = 'ProjectId' in params ? params.ProjectId : null;
        this.PageNumber = 'PageNumber' in params ? params.PageNumber : null;
        this.PageSize = 'PageSize' in params ? params.PageSize : null;
        this.FolderId = 'FolderId' in params ? params.FolderId : null;
        this.Status = 'Status' in params ? params.Status : null;
        this.OwnerUin = 'OwnerUin' in params ? params.OwnerUin : null;
        this.WorkflowType = 'WorkflowType' in params ? params.WorkflowType : null;
        this.KeyWord = 'KeyWord' in params ? params.KeyWord : null;
        this.SortItem = 'SortItem' in params ? params.SortItem : null;
        this.SortType = 'SortType' in params ? params.SortType : null;
        this.CreateUserUin = 'CreateUserUin' in params ? params.CreateUserUin : null;
        this.ModifyTime = 'ModifyTime' in params ? params.ModifyTime : null;
        this.CreateTime = 'CreateTime' in params ? params.CreateTime : null;

    }
}

/**
 * CreateWorkflowFolder response structure.
 * @class
 */
class CreateWorkflowFolderResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Folder creation result. error will be reported if creation failed.
         * @type {CreateFolderResult || null}
         */
        this.Data = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Data) {
            let obj = new CreateFolderResult();
            obj.deserialize(params.Data)
            this.Data = obj;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Retrieves workflow list information item.
 * @class
 */
class WorkflowInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Workflow ID.
         * @type {string || null}
         */
        this.WorkflowId = null;

        /**
         * Workflow name.

         * @type {string || null}
         */
        this.WorkflowName = null;

        /**
         * Workflow type: cycle or manual.

         * @type {string || null}
         */
        this.WorkflowType = null;

        /**
         * Owner ID


         * @type {string || null}
         */
        this.OwnerUin = null;

        /**
         * Creation time.

         * @type {string || null}
         */
        this.CreateTime = null;

        /**
         * Last Modification Time

         * @type {string || null}
         */
        this.ModifyTime = null;

        /**
         * Last updated user ID.

         * @type {string || null}
         */
        this.UpdateUserUin = null;

        /**
         * Workflow description.

         * @type {string || null}
         */
        this.WorkflowDesc = null;

        /**
         * Creator ID.

         * @type {string || null}
         */
        this.CreateUserUin = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.WorkflowId = 'WorkflowId' in params ? params.WorkflowId : null;
        this.WorkflowName = 'WorkflowName' in params ? params.WorkflowName : null;
        this.WorkflowType = 'WorkflowType' in params ? params.WorkflowType : null;
        this.OwnerUin = 'OwnerUin' in params ? params.OwnerUin : null;
        this.CreateTime = 'CreateTime' in params ? params.CreateTime : null;
        this.ModifyTime = 'ModifyTime' in params ? params.ModifyTime : null;
        this.UpdateUserUin = 'UpdateUserUin' in params ? params.UpdateUserUin : null;
        this.WorkflowDesc = 'WorkflowDesc' in params ? params.WorkflowDesc : null;
        this.CreateUserUin = 'CreateUserUin' in params ? params.CreateUserUin : null;

    }
}

/**
 * StopSQLScriptRun response structure.
 * @class
 */
class StopSQLScriptRunResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Execution result
         * @type {SQLStopResult || null}
         */
        this.Data = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Data) {
            let obj = new SQLStopResult();
            obj.deserialize(params.Data)
            this.Data = obj;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * ListOpsTasks response structure.
 * @class
 */
class ListOpsTasksResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Task list.
         * @type {ListOpsTasksPage || null}
         */
        this.Data = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Data) {
            let obj = new ListOpsTasksPage();
            obj.deserialize(params.Data)
            this.Data = obj;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * ListTaskVersions response structure.
 * @class
 */
class ListTaskVersionsResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Task version list.
         * @type {ListTaskVersions || null}
         */
        this.Data = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Data) {
            let obj = new ListTaskVersions();
            obj.deserialize(params.Data)
            this.Data = obj;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Paginate resource folders.
 * @class
 */
class ResourceFolderPage extends  AbstractModel {
    constructor(){
        super();

        /**
         * Resource folder collection information.
         * @type {Array.<ResourceFolder> || null}
         */
        this.Items = null;

        /**
         * Total page number.
         * @type {number || null}
         */
        this.TotalPageNumber = null;

        /**
         * Total resource folder count
         * @type {number || null}
         */
        this.TotalCount = null;

        /**
         * Current Page number
         * @type {number || null}
         */
        this.PageNumber = null;

        /**
         * Items per Page
         * @type {number || null}
         */
        this.PageSize = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Items) {
            this.Items = new Array();
            for (let z in params.Items) {
                let obj = new ResourceFolder();
                obj.deserialize(params.Items[z]);
                this.Items.push(obj);
            }
        }
        this.TotalPageNumber = 'TotalPageNumber' in params ? params.TotalPageNumber : null;
        this.TotalCount = 'TotalCount' in params ? params.TotalCount : null;
        this.PageNumber = 'PageNumber' in params ? params.PageNumber : null;
        this.PageSize = 'PageSize' in params ? params.PageSize : null;

    }
}

/**
 * UpdateOpsTasksOwner response structure.
 * @class
 */
class UpdateOpsTasksOwnerResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Operation result.
         * @type {UpdateTasksOwner || null}
         */
        this.Data = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Data) {
            let obj = new UpdateTasksOwner();
            obj.deserialize(params.Data)
            this.Data = obj;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * ListDownstreamTasks response structure.
 * @class
 */
class ListDownstreamTasksResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Describes the downstream dependency details.
         * @type {DependencyConfigPage || null}
         */
        this.Data = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Data) {
            let obj = new DependencyConfigPage();
            obj.deserialize(params.Data)
            this.Data = obj;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DeleteWorkflow response structure.
 * @class
 */
class DeleteWorkflowResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Returns the count of successfully deleted workflow tasks, number of failures, and total number of tasks.
         * @type {DeleteWorkflowResult || null}
         */
        this.Data = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Data) {
            let obj = new DeleteWorkflowResult();
            obj.deserialize(params.Data)
            this.Data = obj;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Query workflow pagination list.
 * @class
 */
class OpsWorkflows extends  AbstractModel {
    constructor(){
        super();

        /**
         * Record list	
	

         * @type {Array.<OpsWorkflow> || null}
         */
        this.Items = null;

        /**
         * Total number of results


         * @type {number || null}
         */
        this.TotalCount = null;

        /**
         * Total pages


         * @type {number || null}
         */
        this.TotalPageNumber = null;

        /**
         * Pagination size.

         * @type {number || null}
         */
        this.PageSize = null;

        /**
         * Page number


         * @type {number || null}
         */
        this.PageNumber = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Items) {
            this.Items = new Array();
            for (let z in params.Items) {
                let obj = new OpsWorkflow();
                obj.deserialize(params.Items[z]);
                this.Items.push(obj);
            }
        }
        this.TotalCount = 'TotalCount' in params ? params.TotalCount : null;
        this.TotalPageNumber = 'TotalPageNumber' in params ? params.TotalPageNumber : null;
        this.PageSize = 'PageSize' in params ? params.PageSize : null;
        this.PageNumber = 'PageNumber' in params ? params.PageNumber : null;

    }
}

/**
 * ListOpsAlarmRules response structure.
 * @class
 */
class ListOpsAlarmRulesResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Alarm information response.
         * @type {ListAlarmRulesResult || null}
         */
        this.Data = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Data) {
            let obj = new ListAlarmRulesResult();
            obj.deserialize(params.Data)
            this.Data = obj;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * CreateCodeFile response structure.
 * @class
 */
class CreateCodeFileResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Result
         * @type {CodeFile || null}
         */
        this.Data = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Data) {
            let obj = new CodeFile();
            obj.deserialize(params.Data)
            this.Data = obj;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * UpdateOpsTasksOwner request structure.
 * @class
 */
class UpdateOpsTasksOwnerRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Project ID
         * @type {string || null}
         */
        this.ProjectId = null;

        /**
         * Task Id list. specifies the list of task ids.
         * @type {Array.<string> || null}
         */
        this.TaskIds = null;

        /**
         * Task owner Id.
         * @type {string || null}
         */
        this.OwnerUin = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.ProjectId = 'ProjectId' in params ? params.ProjectId : null;
        this.TaskIds = 'TaskIds' in params ? params.TaskIds : null;
        this.OwnerUin = 'OwnerUin' in params ? params.OwnerUin : null;

    }
}

/**
 * DeleteResourceFolder response structure.
 * @class
 */
class DeleteResourceFolderResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * true represents successful deletion. false represents failure.
         * @type {DeleteFolderResult || null}
         */
        this.Data = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Data) {
            let obj = new DeleteFolderResult();
            obj.deserialize(params.Data)
            this.Data = obj;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * map
 * @class
 */
class KVMap extends  AbstractModel {
    constructor(){
        super();

        /**
         * k
         * @type {string || null}
         */
        this.K = null;

        /**
         * v
         * @type {string || null}
         */
        this.V = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.K = 'K' in params ? params.K : null;
        this.V = 'V' in params ? params.V : null;

    }
}

/**
 * Query workflow pagination list.
 * @class
 */
class ListWorkflowInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * List items.
         * @type {Array.<WorkflowInfo> || null}
         */
        this.Items = null;

        /**
         * Total number of pages that meet the query condition.

         * @type {number || null}
         */
        this.TotalPageNumber = null;

        /**
         * Current request data page number.

         * @type {number || null}
         */
        this.PageNumber = null;

        /**
         * Number of entries in the current request.

         * @type {number || null}
         */
        this.PageSize = null;

        /**
         * Total number of data entries that meet the query condition.

         * @type {number || null}
         */
        this.TotalCount = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Items) {
            this.Items = new Array();
            for (let z in params.Items) {
                let obj = new WorkflowInfo();
                obj.deserialize(params.Items[z]);
                this.Items.push(obj);
            }
        }
        this.TotalPageNumber = 'TotalPageNumber' in params ? params.TotalPageNumber : null;
        this.PageNumber = 'PageNumber' in params ? params.PageNumber : null;
        this.PageSize = 'PageSize' in params ? params.PageSize : null;
        this.TotalCount = 'TotalCount' in params ? params.TotalCount : null;

    }
}

/**
 * ListResourceFiles response structure.
 * @class
 */
class ListResourceFilesResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Retrieve the resource file list.
         * @type {ResourceFilePage || null}
         */
        this.Data = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Data) {
            let obj = new ResourceFilePage();
            obj.deserialize(params.Data)
            this.Data = obj;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * ListDownstreamTaskInstances request structure.
 * @class
 */
class ListDownstreamTaskInstancesRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Project ID.

         * @type {string || null}
         */
        this.ProjectId = null;

        /**
         * **Instance unique id**.
         * @type {string || null}
         */
        this.InstanceKey = null;

        /**
         * **Time zone** timeZone, default UTC+8.
         * @type {string || null}
         */
        this.TimeZone = null;

        /**
         * **Page number, int** used in conjunction with pageSize and cannot be less than 1. default value: 1.
         * @type {number || null}
         */
        this.PageNumber = null;

        /**
         * Specifies the number of items to display per page. default: 10. value range: 1-100.
         * @type {number || null}
         */
        this.PageSize = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.ProjectId = 'ProjectId' in params ? params.ProjectId : null;
        this.InstanceKey = 'InstanceKey' in params ? params.InstanceKey : null;
        this.TimeZone = 'TimeZone' in params ? params.TimeZone : null;
        this.PageNumber = 'PageNumber' in params ? params.PageNumber : null;
        this.PageSize = 'PageSize' in params ? params.PageSize : null;

    }
}

/**
 * ListTaskInstanceExecutions request structure.
 * @class
 */
class ListTaskInstanceExecutionsRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Project id.
         * @type {string || null}
         */
        this.ProjectId = null;

        /**
         * Instance unique id, can be obtained through ListInstances.
         * @type {string || null}
         */
        this.InstanceKey = null;

        /**
         * **Time zone** timeZone, specifies the time zone of the passed in time string. default UTC+8.
         * @type {string || null}
         */
        this.TimeZone = null;

        /**
         * Size per page. default: 10. maximum: 200.
         * @type {number || null}
         */
        this.PageSize = null;

        /**
         * Page number, which is 1 by default.
         * @type {number || null}
         */
        this.PageNumber = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.ProjectId = 'ProjectId' in params ? params.ProjectId : null;
        this.InstanceKey = 'InstanceKey' in params ? params.InstanceKey : null;
        this.TimeZone = 'TimeZone' in params ? params.TimeZone : null;
        this.PageSize = 'PageSize' in params ? params.PageSize : null;
        this.PageNumber = 'PageNumber' in params ? params.PageNumber : null;

    }
}

/**
 * ListUpstreamOpsTasks response structure.
 * @class
 */
class ListUpstreamOpsTasksResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Upstream task details.
         * @type {ParentDependencyConfigPage || null}
         */
        this.Data = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Data) {
            let obj = new ParentDependencyConfigPage();
            obj.deserialize(params.Data)
            this.Data = obj;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DeleteTask request structure.
 * @class
 */
class DeleteTaskRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Project ID.

         * @type {string || null}
         */
        this.ProjectId = null;

        /**
         * Either Task ID or VirtualTaskId must be provided (optional, choose one).
         * @type {string || null}
         */
        this.TaskId = null;

        /**
         * Whether to send a notification to downstream task owners when performing task operations.
true: Send notification
false: Do not send notification
default: false.
         * @type {boolean || null}
         */
        this.OperateInform = null;

        /**
         * Task Deletion Mode.
true: Do not force downstream task instances to fail
false: Force downstream task instances to fail
default: false 

         * @type {boolean || null}
         */
        this.DeleteMode = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.ProjectId = 'ProjectId' in params ? params.ProjectId : null;
        this.TaskId = 'TaskId' in params ? params.TaskId : null;
        this.OperateInform = 'OperateInform' in params ? params.OperateInform : null;
        this.DeleteMode = 'DeleteMode' in params ? params.DeleteMode : null;

    }
}

/**
 * UpdateWorkflow response structure.
 * @class
 */
class UpdateWorkflowResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * true represents success. false represents failure.
         * @type {UpdateWorkflowResult || null}
         */
        this.Data = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Data) {
            let obj = new UpdateWorkflowResult();
            obj.deserialize(params.Data)
            this.Data = obj;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * notebook kernel session information.
 * @class
 */
class NotebookSessionInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Specifies the session ID.
         * @type {string || null}
         */
        this.NotebookSessionId = null;

        /**
         * Session Name
         * @type {string || null}
         */
        this.NotebookSessionName = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.NotebookSessionId = 'NotebookSessionId' in params ? params.NotebookSessionId : null;
        this.NotebookSessionName = 'NotebookSessionName' in params ? params.NotebookSessionName : null;

    }
}

/**
 * Task list pagination.
 * @class
 */
class ListOpsTasksPage extends  AbstractModel {
    constructor(){
        super();

        /**
         * Total number of results

         * @type {number || null}
         */
        this.TotalCount = null;

        /**
         * Total pages

         * @type {number || null}
         */
        this.TotalPageNumber = null;

        /**
         * Record list	
	

         * @type {Array.<TaskOpsInfo> || null}
         */
        this.Items = null;

        /**
         * Page number.

         * @type {number || null}
         */
        this.PageNumber = null;

        /**
         * Pagination size.

         * @type {number || null}
         */
        this.PageSize = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TotalCount = 'TotalCount' in params ? params.TotalCount : null;
        this.TotalPageNumber = 'TotalPageNumber' in params ? params.TotalPageNumber : null;

        if (params.Items) {
            this.Items = new Array();
            for (let z in params.Items) {
                let obj = new TaskOpsInfo();
                obj.deserialize(params.Items[z]);
                this.Items.push(obj);
            }
        }
        this.PageNumber = 'PageNumber' in params ? params.PageNumber : null;
        this.PageSize = 'PageSize' in params ? params.PageSize : null;

    }
}

/**
 * DeleteWorkflow request structure.
 * @class
 */
class DeleteWorkflowRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Project ID.

         * @type {string || null}
         */
        this.ProjectId = null;

        /**
         * Workflow id.
         * @type {string || null}
         */
        this.WorkflowId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.ProjectId = 'ProjectId' in params ? params.ProjectId : null;
        this.WorkflowId = 'WorkflowId' in params ? params.WorkflowId : null;

    }
}

/**
 * CreateOpsAlarmRule response structure.
 * @class
 */
class CreateOpsAlarmRuleResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Specifies the unique id of the Alarm rule.
         * @type {CreateAlarmRuleData || null}
         */
        this.Data = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Data) {
            let obj = new CreateAlarmRuleData();
            obj.deserialize(params.Data)
            this.Data = obj;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DeleteOpsAlarmRule response structure.
 * @class
 */
class DeleteOpsAlarmRuleResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Whether deletion succeeded.
         * @type {DeleteAlarmRuleResult || null}
         */
        this.Data = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Data) {
            let obj = new DeleteAlarmRuleResult();
            obj.deserialize(params.Data)
            this.Data = obj;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * GetTask request structure.
 * @class
 */
class GetTaskRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Project ID.
         * @type {string || null}
         */
        this.ProjectId = null;

        /**
         * Task ID
         * @type {string || null}
         */
        this.TaskId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.ProjectId = 'ProjectId' in params ? params.ProjectId : null;
        this.TaskId = 'TaskId' in params ? params.TaskId : null;

    }
}

/**
 * Describes the response of updating an Alarm rule.
 * @class
 */
class ModifyAlarmRuleResult extends  AbstractModel {
    constructor(){
        super();

        /**
         * Whether update succeeded
         * @type {boolean || null}
         */
        this.Status = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Status = 'Status' in params ? params.Status : null;

    }
}

/**
 * Alarm information.
 * @class
 */
class AlarmMessage extends  AbstractModel {
    constructor(){
        super();

        /**
         * Alarm message Id.
         * @type {number || null}
         */
        this.AlarmMessageId = null;

        /**
         * Alarm time. the same Alarm may be sent multiple times, only the latest Alarm time is displayed.
         * @type {string || null}
         */
        this.AlarmTime = null;

        /**
         * Task name.
         * @type {string || null}
         */
        this.TaskName = null;

        /**
         * Task ID
         * @type {string || null}
         */
        this.TaskId = null;

        /**
         * Instance data time of the task.
         * @type {string || null}
         */
        this.CurRunDate = null;

        /**
         * Indicates the Alarm cause.
         * @type {string || null}
         */
        this.AlarmReason = null;

        /**
         * Alarm level. 1. ordinary, 2. important, 3. critical.
         * @type {number || null}
         */
        this.AlarmLevel = null;

        /**
         * Specifies the Id of the Alarm rule.
         * @type {string || null}
         */
        this.AlarmRuleId = null;

        /**
         * Alarm channel specifies the notification methods: 1. mail, 2. sms, 3. wechat, 4. voice, 5. wecom, 6. Http, 7. wecom group, 8. lark group, 9. dingtalk group, 10. Slack group, 11. Teams group (default: 1. mail).
         * @type {Array.<string> || null}
         */
        this.AlarmWays = null;

        /**
         * Alarm recipient
         * @type {Array.<string> || null}
         */
        this.AlarmRecipients = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.AlarmMessageId = 'AlarmMessageId' in params ? params.AlarmMessageId : null;
        this.AlarmTime = 'AlarmTime' in params ? params.AlarmTime : null;
        this.TaskName = 'TaskName' in params ? params.TaskName : null;
        this.TaskId = 'TaskId' in params ? params.TaskId : null;
        this.CurRunDate = 'CurRunDate' in params ? params.CurRunDate : null;
        this.AlarmReason = 'AlarmReason' in params ? params.AlarmReason : null;
        this.AlarmLevel = 'AlarmLevel' in params ? params.AlarmLevel : null;
        this.AlarmRuleId = 'AlarmRuleId' in params ? params.AlarmRuleId : null;
        this.AlarmWays = 'AlarmWays' in params ? params.AlarmWays : null;
        this.AlarmRecipients = 'AlarmRecipients' in params ? params.AlarmRecipients : null;

    }
}

/**
 * ListResourceFiles request structure.
 * @class
 */
class ListResourceFilesRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Project ID.
         * @type {string || null}
         */
        this.ProjectId = null;

        /**
         * Data page number, equal to or greater than 1. default 1.
         * @type {number || null}
         */
        this.PageNumber = null;

        /**
         * Specifies the number of data records displayed per page. valid values: 10 to 200. default: 10.
         * @type {number || null}
         */
        this.PageSize = null;

        /**
         * Resource file name (fuzzy search keyword).
         * @type {string || null}
         */
        this.ResourceName = null;

        /**
         * Specifies the path of the file's parent folder (for example /a/b/c, querying resource files under the folder c).
         * @type {string || null}
         */
        this.ParentFolderPath = null;

        /**
         * Creator ID. obtain through the DescribeCurrentUserInfo API.
         * @type {string || null}
         */
        this.CreateUserUin = null;

        /**
         * Update time range. specifies the start time in yyyy-MM-dd HH:MM:ss format.
         * @type {string || null}
         */
        this.ModifyTimeStart = null;

        /**
         * Update time range. specifies the end time in yyyy-MM-dd HH:MM:ss format.
         * @type {string || null}
         */
        this.ModifyTimeEnd = null;

        /**
         * Create time range. specifies the start time in yyyy-MM-dd HH:MM:ss format.
         * @type {string || null}
         */
        this.CreateTimeStart = null;

        /**
         * Create time range. specifies the termination time in yyyy-MM-dd HH:MM:ss format.
         * @type {string || null}
         */
        this.CreateTimeEnd = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.ProjectId = 'ProjectId' in params ? params.ProjectId : null;
        this.PageNumber = 'PageNumber' in params ? params.PageNumber : null;
        this.PageSize = 'PageSize' in params ? params.PageSize : null;
        this.ResourceName = 'ResourceName' in params ? params.ResourceName : null;
        this.ParentFolderPath = 'ParentFolderPath' in params ? params.ParentFolderPath : null;
        this.CreateUserUin = 'CreateUserUin' in params ? params.CreateUserUin : null;
        this.ModifyTimeStart = 'ModifyTimeStart' in params ? params.ModifyTimeStart : null;
        this.ModifyTimeEnd = 'ModifyTimeEnd' in params ? params.ModifyTimeEnd : null;
        this.CreateTimeStart = 'CreateTimeStart' in params ? params.CreateTimeStart : null;
        this.CreateTimeEnd = 'CreateTimeEnd' in params ? params.CreateTimeEnd : null;

    }
}

/**
 * GetOpsAlarmRule response structure.
 * @class
 */
class GetOpsAlarmRuleResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Specifies the Alarm rule details.
         * @type {AlarmRuleData || null}
         */
        this.Data = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Data) {
            let obj = new AlarmRuleData();
            obj.deserialize(params.Data)
            this.Data = obj;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Update task response parameters structure.
 * @class
 */
class UpdateTaskResult extends  AbstractModel {
    constructor(){
        super();

        /**
         * Processing result. returns true on success. returns false on failure.
         * @type {boolean || null}
         */
        this.Status = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Status = 'Status' in params ? params.Status : null;

    }
}

/**
 * GetResourceFile request structure.
 * @class
 */
class GetResourceFileRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Project ID.
         * @type {string || null}
         */
        this.ProjectId = null;

        /**
         * Resource file ID. obtain through the API ListResourceFiles.
         * @type {string || null}
         */
        this.ResourceId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.ProjectId = 'ProjectId' in params ? params.ProjectId : null;
        this.ResourceId = 'ResourceId' in params ? params.ResourceId : null;

    }
}

/**
 * Describes the result of batch modifying the task owner.
 * @class
 */
class UpdateTasksOwner extends  AbstractModel {
    constructor(){
        super();

        /**
         * Describes the result of modifying the task owner.
         * @type {boolean || null}
         */
        this.Status = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Status = 'Status' in params ? params.Status : null;

    }
}

/**
 * Instance list pagination entity.
 * @class
 */
class TaskInstancePage extends  AbstractModel {
    constructor(){
        super();

        /**
         * **Total number of entries**.

         * @type {number || null}
         */
        this.TotalCount = null;

        /**
         * **Total number of pages.**

         * @type {number || null}
         */
        this.TotalPageNumber = null;

        /**
         * Page number.


         * @type {number || null}
         */
        this.PageNumber = null;

        /**
         * Specifies the number of entries per page.

         * @type {number || null}
         */
        this.PageSize = null;

        /**
         * Data List


         * @type {Array.<TaskInstance> || null}
         */
        this.Items = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TotalCount = 'TotalCount' in params ? params.TotalCount : null;
        this.TotalPageNumber = 'TotalPageNumber' in params ? params.TotalPageNumber : null;
        this.PageNumber = 'PageNumber' in params ? params.PageNumber : null;
        this.PageSize = 'PageSize' in params ? params.PageSize : null;

        if (params.Items) {
            this.Items = new Array();
            for (let z in params.Items) {
                let obj = new TaskInstance();
                obj.deserialize(params.Items[z]);
                this.Items.push(obj);
            }
        }

    }
}

/**
 * GetOpsAsyncJob request structure.
 * @class
 */
class GetOpsAsyncJobRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Project ID.
         * @type {string || null}
         */
        this.ProjectId = null;

        /**
         * Asynchronous operation id.
         * @type {string || null}
         */
        this.AsyncId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.ProjectId = 'ProjectId' in params ? params.ProjectId : null;
        this.AsyncId = 'AsyncId' in params ? params.AsyncId : null;

    }
}

/**
 * DeleteCodeFolder response structure.
 * @class
 */
class DeleteCodeFolderResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Execution result
         * @type {CodeStudioFolderActionResult || null}
         */
        this.Data = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Data) {
            let obj = new CodeStudioFolderActionResult();
            obj.deserialize(params.Data)
            this.Data = obj;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * PauseOpsTasksAsync request structure.
 * @class
 */
class PauseOpsTasksAsyncRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Project ID
         * @type {string || null}
         */
        this.ProjectId = null;

        /**
         * Task Id list. specifies the list of task ids.
         * @type {Array.<string> || null}
         */
        this.TaskIds = null;

        /**
         * Whether required to terminate the generated instance.
         * @type {boolean || null}
         */
        this.KillInstance = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.ProjectId = 'ProjectId' in params ? params.ProjectId : null;
        this.TaskIds = 'TaskIds' in params ? params.TaskIds : null;
        this.KillInstance = 'KillInstance' in params ? params.KillInstance : null;

    }
}

/**
 * Instance execution list.
 * @class
 */
class TaskInstanceExecutions extends  AbstractModel {
    constructor(){
        super();

        /**
         * Total number of results
         * @type {number || null}
         */
        this.TotalCount = null;

        /**
         * Total pages
         * @type {number || null}
         */
        this.TotalPageNumber = null;

        /**
         * Record list
         * @type {Array.<InstanceExecution> || null}
         */
        this.Items = null;

        /**
         * Page number.
         * @type {number || null}
         */
        this.PageNumber = null;

        /**
         * Pagination size.
         * @type {number || null}
         */
        this.PageSize = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TotalCount = 'TotalCount' in params ? params.TotalCount : null;
        this.TotalPageNumber = 'TotalPageNumber' in params ? params.TotalPageNumber : null;

        if (params.Items) {
            this.Items = new Array();
            for (let z in params.Items) {
                let obj = new InstanceExecution();
                obj.deserialize(params.Items[z]);
                this.Items.push(obj);
            }
        }
        this.PageNumber = 'PageNumber' in params ? params.PageNumber : null;
        this.PageSize = 'PageSize' in params ? params.PageSize : null;

    }
}

/**
 * Update resource file result.
 * @class
 */
class UpdateResourceFileResult extends  AbstractModel {
    constructor(){
        super();

        /**
         * true
         * @type {boolean || null}
         */
        this.Status = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Status = 'Status' in params ? params.Status : null;

    }
}

/**
 * Describes the return type of creating a data exploration script folder.
 * @class
 */
class SqlCreateResult extends  AbstractModel {
    constructor(){
        super();

        /**
         * Folder ID
         * @type {string || null}
         */
        this.FolderId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.FolderId = 'FolderId' in params ? params.FolderId : null;

    }
}

/**
 * UpdateResourceFile response structure.
 * @class
 */
class UpdateResourceFileResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Update status.
         * @type {UpdateResourceFileResult || null}
         */
        this.Data = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Data) {
            let obj = new UpdateResourceFileResult();
            obj.deserialize(params.Data)
            this.Data = obj;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * CreateWorkflow request structure.
 * @class
 */
class CreateWorkflowRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Project ID.
         * @type {string || null}
         */
        this.ProjectId = null;

        /**
         * Workflow name.
         * @type {string || null}
         */
        this.WorkflowName = null;

        /**
         * Specifies the folder path.
         * @type {string || null}
         */
        this.ParentFolderPath = null;

        /**
         * Workflow type. value examples: cycle for periodic workflow; manual for manual workflow. default input: cycle.
         * @type {string || null}
         */
        this.WorkflowType = null;

        /**
         * Workflow description.
         * @type {string || null}
         */
        this.WorkflowDesc = null;

        /**
         * Workflow owner ID.
         * @type {string || null}
         */
        this.OwnerUin = null;

        /**
         * Workflow parameter.
         * @type {Array.<ParamInfo> || null}
         */
        this.WorkflowParams = null;

        /**
         * Specifies unified scheduling info.
         * @type {WorkflowSchedulerConfigurationInfo || null}
         */
        this.WorkflowSchedulerConfiguration = null;

        /**
         * BundleId item.
         * @type {string || null}
         */
        this.BundleId = null;

        /**
         * Bundle info.
         * @type {string || null}
         */
        this.BundleInfo = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.ProjectId = 'ProjectId' in params ? params.ProjectId : null;
        this.WorkflowName = 'WorkflowName' in params ? params.WorkflowName : null;
        this.ParentFolderPath = 'ParentFolderPath' in params ? params.ParentFolderPath : null;
        this.WorkflowType = 'WorkflowType' in params ? params.WorkflowType : null;
        this.WorkflowDesc = 'WorkflowDesc' in params ? params.WorkflowDesc : null;
        this.OwnerUin = 'OwnerUin' in params ? params.OwnerUin : null;

        if (params.WorkflowParams) {
            this.WorkflowParams = new Array();
            for (let z in params.WorkflowParams) {
                let obj = new ParamInfo();
                obj.deserialize(params.WorkflowParams[z]);
                this.WorkflowParams.push(obj);
            }
        }

        if (params.WorkflowSchedulerConfiguration) {
            let obj = new WorkflowSchedulerConfigurationInfo();
            obj.deserialize(params.WorkflowSchedulerConfiguration)
            this.WorkflowSchedulerConfiguration = obj;
        }
        this.BundleId = 'BundleId' in params ? params.BundleId : null;
        this.BundleInfo = 'BundleInfo' in params ? params.BundleInfo : null;

    }
}

/**
 * Alarm channel specifies the webhook url configuration for wecom group, dingtalk group, or lark group.
 * @class
 */
class AlarmWayWebHook extends  AbstractModel {
    constructor(){
        super();

        /**
         * Specifies the Alarm channel value.
7. wecom group 8. lark group 9. dingtalk group 10. Slack group 11. Teams group.
         * @type {string || null}
         */
        this.AlarmWay = null;

        /**
         * webhook url list of the Alarm group.
         * @type {Array.<string> || null}
         */
        this.WebHooks = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.AlarmWay = 'AlarmWay' in params ? params.AlarmWay : null;
        this.WebHooks = 'WebHooks' in params ? params.WebHooks : null;

    }
}

/**
 * Scheduling variable parameter.
 * @class
 */
class TaskSchedulingParameter extends  AbstractModel {
    constructor(){
        super();

        /**
         * Parameter name.

         * @type {string || null}
         */
        this.ParamKey = null;

        /**
         * Parameter value.
         * @type {string || null}
         */
        this.ParamValue = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.ParamKey = 'ParamKey' in params ? params.ParamKey : null;
        this.ParamValue = 'ParamValue' in params ? params.ParamValue : null;

    }
}

/**
 * Describes the response result of creating an Alarm rule.
 * @class
 */
class CreateAlarmRuleData extends  AbstractModel {
    constructor(){
        super();

        /**
         * Specifies the unique id of the Alarm rule.
         * @type {string || null}
         */
        this.AlarmRuleId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.AlarmRuleId = 'AlarmRuleId' in params ? params.AlarmRuleId : null;

    }
}

/**
 * SubmitTask request structure.
 * @class
 */
class SubmitTaskRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Project ID.
         * @type {string || null}
         */
        this.ProjectId = null;

        /**
         * Task ID
         * @type {string || null}
         */
        this.TaskId = null;

        /**
         * Version remarks.
         * @type {string || null}
         */
        this.VersionRemark = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.ProjectId = 'ProjectId' in params ? params.ProjectId : null;
        this.TaskId = 'TaskId' in params ? params.TaskId : null;
        this.VersionRemark = 'VersionRemark' in params ? params.VersionRemark : null;

    }
}

/**
 * Instance log content.
 * @class
 */
class InstanceLog extends  AbstractModel {
    constructor(){
        super();

        /**
         * Instance unique id.

         * @type {string || null}
         */
        this.InstanceKey = null;

        /**
         * Project ID.


         * @type {string || null}
         */
        this.ProjectId = null;

        /**
         * Specifies the code content to run.

         * @type {string || null}
         */
        this.CodeContent = null;

        /**
         * log information

         * @type {string || null}
         */
        this.LogInfo = null;

        /**
         * Used for paginated log queries; has no specific business meaning.

For the first query, set the value to null.

For subsequent queries, use the NextCursor value returned from the previous query.
         * @type {string || null}
         */
        this.NextCursor = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.InstanceKey = 'InstanceKey' in params ? params.InstanceKey : null;
        this.ProjectId = 'ProjectId' in params ? params.ProjectId : null;
        this.CodeContent = 'CodeContent' in params ? params.CodeContent : null;
        this.LogInfo = 'LogInfo' in params ? params.LogInfo : null;
        this.NextCursor = 'NextCursor' in params ? params.NextCursor : null;

    }
}

/**
 * GetResourceFile response structure.
 * @class
 */
class GetResourceFileResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Describes the resource file details.
         * @type {ResourceFile || null}
         */
        this.Data = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Data) {
            let obj = new ResourceFile();
            obj.deserialize(params.Data)
            this.Data = obj;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Create resource file result.
 * @class
 */
class CreateResourceFileResult extends  AbstractModel {
    constructor(){
        super();

        /**
         * Resource file ID.
         * @type {string || null}
         */
        this.ResourceId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.ResourceId = 'ResourceId' in params ? params.ResourceId : null;

    }
}

/**
 * UpdateSQLFolder request structure.
 * @class
 */
class UpdateSQLFolderRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Folder ID
         * @type {string || null}
         */
        this.FolderId = null;

        /**
         * Folder name.
         * @type {string || null}
         */
        this.FolderName = null;

        /**
         * Project ID.
         * @type {string || null}
         */
        this.ProjectId = null;

        /**
         * Access permission: SHARED, PRIVATE.
         * @type {string || null}
         */
        this.AccessScope = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.FolderId = 'FolderId' in params ? params.FolderId : null;
        this.FolderName = 'FolderName' in params ? params.FolderName : null;
        this.ProjectId = 'ProjectId' in params ? params.ProjectId : null;
        this.AccessScope = 'AccessScope' in params ? params.AccessScope : null;

    }
}

/**
 * Description of a supplementary instance.
 * @class
 */
class BackfillInstance extends  AbstractModel {
    constructor(){
        super();

        /**
         * Task name.
         * @type {string || null}
         */
        this.TaskName = null;

        /**
         * Task ID
         * @type {string || null}
         */
        this.TaskId = null;

        /**
         * Specifies the instance data time.
         * @type {string || null}
         */
        this.CurRunDate = null;

        /**
         * Execution status.
         * @type {string || null}
         */
        this.State = null;

        /**
         * Start time.


         * @type {string || null}
         */
        this.StartTime = null;

        /**
         * End time.


         * @type {string || null}
         */
        this.EndTime = null;

        /**
         * Execution duration.


         * @type {string || null}
         */
        this.CostTime = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TaskName = 'TaskName' in params ? params.TaskName : null;
        this.TaskId = 'TaskId' in params ? params.TaskId : null;
        this.CurRunDate = 'CurRunDate' in params ? params.CurRunDate : null;
        this.State = 'State' in params ? params.State : null;
        this.StartTime = 'StartTime' in params ? params.StartTime : null;
        this.EndTime = 'EndTime' in params ? params.EndTime : null;
        this.CostTime = 'CostTime' in params ? params.CostTime : null;

    }
}

/**
 * ListUpstreamTaskInstances response structure.
 * @class
 */
class ListUpstreamTaskInstancesResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Upstream instance list.
         * @type {TaskInstancePage || null}
         */
        this.Data = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Data) {
            let obj = new TaskInstancePage();
            obj.deserialize(params.Data)
            this.Data = obj;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * CreateSQLFolder request structure.
 * @class
 */
class CreateSQLFolderRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Folder name.
         * @type {string || null}
         */
        this.FolderName = null;

        /**
         * Project ID.
         * @type {string || null}
         */
        this.ProjectId = null;

        /**
         * Parent folder path, /aaa/bbb/ccc. path header must include a slash. pass / to query the root directory.
         * @type {string || null}
         */
        this.ParentFolderPath = null;

        /**
         * Access permission: SHARED, PRIVATE.
         * @type {string || null}
         */
        this.AccessScope = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.FolderName = 'FolderName' in params ? params.FolderName : null;
        this.ProjectId = 'ProjectId' in params ? params.ProjectId : null;
        this.ParentFolderPath = 'ParentFolderPath' in params ? params.ParentFolderPath : null;
        this.AccessScope = 'AccessScope' in params ? params.AccessScope : null;

    }
}

/**
 * UpdateWorkflow request structure.
 * @class
 */
class UpdateWorkflowRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Project ID.
         * @type {string || null}
         */
        this.ProjectId = null;

        /**
         * Workflow ID.
         * @type {string || null}
         */
        this.WorkflowId = null;

        /**
         * Workflow name.
         * @type {string || null}
         */
        this.WorkflowName = null;

        /**
         * Owner ID.
         * @type {string || null}
         */
        this.OwnerUin = null;

        /**
         * Remarks.
         * @type {string || null}
         */
        this.WorkflowDesc = null;

        /**
         * Workflow parameter list.
         * @type {Array.<ParamInfo> || null}
         */
        this.WorkflowParams = null;

        /**
         * Specifies unified scheduling parameters.
         * @type {WorkflowSchedulerConfigurationInfo || null}
         */
        this.WorkflowSchedulerConfiguration = null;

        /**
         * BundleId item.
         * @type {string || null}
         */
        this.BundleId = null;

        /**
         * Bundle info.
         * @type {string || null}
         */
        this.BundleInfo = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.ProjectId = 'ProjectId' in params ? params.ProjectId : null;
        this.WorkflowId = 'WorkflowId' in params ? params.WorkflowId : null;
        this.WorkflowName = 'WorkflowName' in params ? params.WorkflowName : null;
        this.OwnerUin = 'OwnerUin' in params ? params.OwnerUin : null;
        this.WorkflowDesc = 'WorkflowDesc' in params ? params.WorkflowDesc : null;

        if (params.WorkflowParams) {
            this.WorkflowParams = new Array();
            for (let z in params.WorkflowParams) {
                let obj = new ParamInfo();
                obj.deserialize(params.WorkflowParams[z]);
                this.WorkflowParams.push(obj);
            }
        }

        if (params.WorkflowSchedulerConfiguration) {
            let obj = new WorkflowSchedulerConfigurationInfo();
            obj.deserialize(params.WorkflowSchedulerConfiguration)
            this.WorkflowSchedulerConfiguration = obj;
        }
        this.BundleId = 'BundleId' in params ? params.BundleId : null;
        this.BundleInfo = 'BundleInfo' in params ? params.BundleInfo : null;

    }
}

/**
 * Key-value pair
 * @class
 */
class KVPair extends  AbstractModel {
    constructor(){
        super();

        /**
         * Key name


         * @type {string || null}
         */
        this.K = null;

        /**
         * The value. do not pass SQL (the request will be deemed as an attack on the api). if needed, transcode the SQL with Base64 and decode it.

         * @type {string || null}
         */
        this.V = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.K = 'K' in params ? params.K : null;
        this.V = 'V' in params ? params.V : null;

    }
}

/**
 * GetOpsTask response structure.
 * @class
 */
class GetOpsTaskResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Task details.
         * @type {Task || null}
         */
        this.Data = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Data) {
            let obj = new Task();
            obj.deserialize(params.Data)
            this.Data = obj;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Data exploration script configuration.
 * @class
 */
class SQLScriptConfig extends  AbstractModel {
    constructor(){
        super();

        /**
         * Data source Id.

         * @type {string || null}
         */
        this.DatasourceId = null;

        /**
         * Specifies the data source environment.

         * @type {string || null}
         */
        this.DatasourceEnv = null;

        /**
         * Computational resource.

         * @type {string || null}
         */
        this.ComputeResource = null;

        /**
         * Specifies the execution resource group.

         * @type {string || null}
         */
        this.ExecutorGroupId = null;

        /**
         * Advanced running parameter variable replacement map-json String,String.

         * @type {string || null}
         */
        this.Params = null;

        /**
         * Advanced setting. executes configuration parameters. map-json String,String. use Base64 encode.

         * @type {string || null}
         */
        this.AdvanceConfig = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.DatasourceId = 'DatasourceId' in params ? params.DatasourceId : null;
        this.DatasourceEnv = 'DatasourceEnv' in params ? params.DatasourceEnv : null;
        this.ComputeResource = 'ComputeResource' in params ? params.ComputeResource : null;
        this.ExecutorGroupId = 'ExecutorGroupId' in params ? params.ExecutorGroupId : null;
        this.Params = 'Params' in params ? params.Params : null;
        this.AdvanceConfig = 'AdvanceConfig' in params ? params.AdvanceConfig : null;

    }
}

/**
 * Describes the subtask of a business submission JOB.
 * @class
 */
class JobExecutionDto extends  AbstractModel {
    constructor(){
        super();

        /**
         * Job ID of the data exploration.

         * @type {string || null}
         */
        this.JobId = null;

        /**
         * Query job ID.

         * @type {string || null}
         */
        this.JobExecutionId = null;

        /**
         * Specifies the subquery name.

         * @type {string || null}
         */
        this.JobExecutionName = null;

        /**
         * Specifies the subquery sql content.

         * @type {string || null}
         */
        this.ScriptContent = null;

        /**
         * Subquery status.

         * @type {string || null}
         */
        this.Status = null;

        /**
         * Creation time.

         * @type {string || null}
         */
        this.CreateTime = null;

        /**
         * Execution phase.

         * @type {string || null}
         */
        this.ExecuteStageInfo = null;

        /**
         * Log path

         * @type {string || null}
         */
        this.LogFilePath = null;

        /**
         * Result path for download.

         * @type {string || null}
         */
        this.ResultFilePath = null;

        /**
         * Preview result path.

         * @type {string || null}
         */
        this.ResultPreviewFilePath = null;

        /**
         * Total number of lines in the task execution result.

         * @type {number || null}
         */
        this.ResultTotalCount = null;

        /**
         * Update time.

         * @type {string || null}
         */
        this.UpdateTime = null;

        /**
         * End time.


         * @type {string || null}
         */
        this.EndTime = null;

        /**
         * Duration. specifies the time taken.

         * @type {number || null}
         */
        this.TimeCost = null;

        /**
         * SQL content in the context.

         * @type {Array.<string> || null}
         */
        this.ContextScriptContent = null;

        /**
         * Specifies the preview row count for task execution results.

         * @type {number || null}
         */
        this.ResultPreviewCount = null;

        /**
         * Specifies the number of affected rows in task execution.

         * @type {number || null}
         */
        this.ResultEffectCount = null;

        /**
         * Whether the full result is being collected: default false. true indicates the full result is being collected, for the frontend to determine whether to continue to poll.

         * @type {boolean || null}
         */
        this.CollectingTotalResult = null;

        /**
         * Specifies whether to truncate the script content.

         * @type {boolean || null}
         */
        this.ScriptContentTruncate = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.JobId = 'JobId' in params ? params.JobId : null;
        this.JobExecutionId = 'JobExecutionId' in params ? params.JobExecutionId : null;
        this.JobExecutionName = 'JobExecutionName' in params ? params.JobExecutionName : null;
        this.ScriptContent = 'ScriptContent' in params ? params.ScriptContent : null;
        this.Status = 'Status' in params ? params.Status : null;
        this.CreateTime = 'CreateTime' in params ? params.CreateTime : null;
        this.ExecuteStageInfo = 'ExecuteStageInfo' in params ? params.ExecuteStageInfo : null;
        this.LogFilePath = 'LogFilePath' in params ? params.LogFilePath : null;
        this.ResultFilePath = 'ResultFilePath' in params ? params.ResultFilePath : null;
        this.ResultPreviewFilePath = 'ResultPreviewFilePath' in params ? params.ResultPreviewFilePath : null;
        this.ResultTotalCount = 'ResultTotalCount' in params ? params.ResultTotalCount : null;
        this.UpdateTime = 'UpdateTime' in params ? params.UpdateTime : null;
        this.EndTime = 'EndTime' in params ? params.EndTime : null;
        this.TimeCost = 'TimeCost' in params ? params.TimeCost : null;
        this.ContextScriptContent = 'ContextScriptContent' in params ? params.ContextScriptContent : null;
        this.ResultPreviewCount = 'ResultPreviewCount' in params ? params.ResultPreviewCount : null;
        this.ResultEffectCount = 'ResultEffectCount' in params ? params.ResultEffectCount : null;
        this.CollectingTotalResult = 'CollectingTotalResult' in params ? params.CollectingTotalResult : null;
        this.ScriptContentTruncate = 'ScriptContentTruncate' in params ? params.ScriptContentTruncate : null;

    }
}

/**
 * Creates task scheduling configuration info.
 * @class
 */
class CreateTaskSchedulerConfiguration extends  AbstractModel {
    constructor(){
        super();

        /**
         * Period type: defaults to DAY_CYCLE.

Supported types. 

ONEOFF_CYCLE: specifies a one-time cycle.
YEAR_CYCLE: specifies the year cycle.
MONTH_CYCLE: specifies the monthly cycle.
WEEK_CYCLE: specifies the week cycle.
DAY_CYCLE: specifies the day cycle.
HOUR_CYCLE: specifies the hour cycle.
MINUTE_CYCLE: specifies the minute cycle.
CRONTAB_CYCLE: specifies the crontab expression type.
         * @type {string || null}
         */
        this.CycleType = null;

        /**
         * Time zone, defaults to UTC+8.
         * @type {string || null}
         */
        this.ScheduleTimeZone = null;

        /**
         * Cron expression, defaults to 0 0 0 * * ? *.
         * @type {string || null}
         */
        this.CrontabExpression = null;

        /**
         * Effective date, defaults to 00:00:00 of the current date.
         * @type {string || null}
         */
        this.StartTime = null;

        /**
         * End date, defaults to 2099-12-31 23:59:59.
         * @type {string || null}
         */
        this.EndTime = null;

        /**
         * Execution time: the left-closed interval. Default: 00:00.
         * @type {string || null}
         */
        this.ExecutionStartTime = null;

        /**
         * Execution time: the right closed interval. Default: 23:59.
         * @type {string || null}
         */
        this.ExecutionEndTime = null;

        /**
         * Scheduling type: 0 for normal scheduling, 1 for dry-run scheduling. Default is 0.
         * @type {string || null}
         */
        this.ScheduleRunType = null;

        /**
         * Calendar scheduling value: 0 or 1, where 1 means ON and 0 means OFF. Default is 0.
         * @type {string || null}
         */
        this.CalendarOpen = null;

        /**
         * Calendar scheduling:  the calendar ID.
         * @type {string || null}
         */
        this.CalendarId = null;

        /**
         * Self-Dependent. Valid values: parallel, serial, orderly. Default value: serial. 
         * @type {string || null}
         */
        this.SelfDepend = null;

        /**
         * Specifies the upstream dependency list.
         * @type {Array.<DependencyTaskBrief> || null}
         */
        this.UpstreamDependencyConfigList = null;

        /**
         * List of Events
         * @type {Array.<EventListener> || null}
         */
        this.EventListenerList = null;

        /**
         * Task scheduling priority. Valid values: 4 (high), 5 (medium), 6 (low). Default: 6.
         * @type {string || null}
         */
        this.RunPriority = null;

        /**
         * Retry Policy: Retry Wait Time (in minutes): Default 5
         * @type {string || null}
         */
        this.RetryWait = null;

        /**
         * Retry Policy: maximum attempts. Default: 4.
         * @type {string || null}
         */
        this.MaxRetryAttempts = null;

        /**
         * Timeout Handling Policy: Execution Timeout (in minutes), default: -1
         * @type {string || null}
         */
        this.ExecutionTTL = null;

        /**
         * Timeout Handling Policy: Wait Duration Timeout  (in minutes), default: -1
         * @type {string || null}
         */
        this.WaitExecutionTotalTTL = null;

        /**
         * Rerun & Refill Configuration: Default: ALL;

* ALL: Rerun or refill is allowed regardless of whether the task succeeds or fails.

* FAILURE: Rerun or refill is allowed only if the task fails; not allowed if the task succeeds.

* NONE: Rerun or refill is not allowed regardless of success or failure.
         * @type {string || null}
         */
        this.AllowRedoType = null;

        /**
         * Output parameter list.
         * @type {Array.<OutTaskParameter> || null}
         */
        this.ParamTaskOutList = null;

        /**
         * Input parameter list.
         * @type {Array.<InTaskParameter> || null}
         */
        this.ParamTaskInList = null;

        /**
         * Output registration.
         * @type {Array.<TaskDataRegistry> || null}
         */
        this.TaskOutputRegistryList = null;

        /**
         * **Instance generation policy**.
T_PLUS_0: specifies t+0 generation. default policy.
T_PLUS_1: specifies t+1 generation.
         * @type {string || null}
         */
        this.InitStrategy = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.CycleType = 'CycleType' in params ? params.CycleType : null;
        this.ScheduleTimeZone = 'ScheduleTimeZone' in params ? params.ScheduleTimeZone : null;
        this.CrontabExpression = 'CrontabExpression' in params ? params.CrontabExpression : null;
        this.StartTime = 'StartTime' in params ? params.StartTime : null;
        this.EndTime = 'EndTime' in params ? params.EndTime : null;
        this.ExecutionStartTime = 'ExecutionStartTime' in params ? params.ExecutionStartTime : null;
        this.ExecutionEndTime = 'ExecutionEndTime' in params ? params.ExecutionEndTime : null;
        this.ScheduleRunType = 'ScheduleRunType' in params ? params.ScheduleRunType : null;
        this.CalendarOpen = 'CalendarOpen' in params ? params.CalendarOpen : null;
        this.CalendarId = 'CalendarId' in params ? params.CalendarId : null;
        this.SelfDepend = 'SelfDepend' in params ? params.SelfDepend : null;

        if (params.UpstreamDependencyConfigList) {
            this.UpstreamDependencyConfigList = new Array();
            for (let z in params.UpstreamDependencyConfigList) {
                let obj = new DependencyTaskBrief();
                obj.deserialize(params.UpstreamDependencyConfigList[z]);
                this.UpstreamDependencyConfigList.push(obj);
            }
        }

        if (params.EventListenerList) {
            this.EventListenerList = new Array();
            for (let z in params.EventListenerList) {
                let obj = new EventListener();
                obj.deserialize(params.EventListenerList[z]);
                this.EventListenerList.push(obj);
            }
        }
        this.RunPriority = 'RunPriority' in params ? params.RunPriority : null;
        this.RetryWait = 'RetryWait' in params ? params.RetryWait : null;
        this.MaxRetryAttempts = 'MaxRetryAttempts' in params ? params.MaxRetryAttempts : null;
        this.ExecutionTTL = 'ExecutionTTL' in params ? params.ExecutionTTL : null;
        this.WaitExecutionTotalTTL = 'WaitExecutionTotalTTL' in params ? params.WaitExecutionTotalTTL : null;
        this.AllowRedoType = 'AllowRedoType' in params ? params.AllowRedoType : null;

        if (params.ParamTaskOutList) {
            this.ParamTaskOutList = new Array();
            for (let z in params.ParamTaskOutList) {
                let obj = new OutTaskParameter();
                obj.deserialize(params.ParamTaskOutList[z]);
                this.ParamTaskOutList.push(obj);
            }
        }

        if (params.ParamTaskInList) {
            this.ParamTaskInList = new Array();
            for (let z in params.ParamTaskInList) {
                let obj = new InTaskParameter();
                obj.deserialize(params.ParamTaskInList[z]);
                this.ParamTaskInList.push(obj);
            }
        }

        if (params.TaskOutputRegistryList) {
            this.TaskOutputRegistryList = new Array();
            for (let z in params.TaskOutputRegistryList) {
                let obj = new TaskDataRegistry();
                obj.deserialize(params.TaskOutputRegistryList[z]);
                this.TaskOutputRegistryList.push(obj);
            }
        }
        this.InitStrategy = 'InitStrategy' in params ? params.InitStrategy : null;

    }
}

/**
 * CreateCodeFolder response structure.
 * @class
 */
class CreateCodeFolderResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Indicates whether the operation is successful. valid values: true (successful), false (unsuccessful).
         * @type {CodeStudioFolderResult || null}
         */
        this.Data = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Data) {
            let obj = new CodeStudioFolderResult();
            obj.deserialize(params.Data)
            this.Data = obj;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * ListUpstreamTaskInstances request structure.
 * @class
 */
class ListUpstreamTaskInstancesRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Project ID.

         * @type {string || null}
         */
        this.ProjectId = null;

        /**
         * **Instance unique id**.
         * @type {string || null}
         */
        this.InstanceKey = null;

        /**
         * **Time zone** timeZone, default UTC+8.
         * @type {string || null}
         */
        this.TimeZone = null;

        /**
         * **Page number, int** used in conjunction with pageSize and cannot be less than 1. default value: 1.
         * @type {number || null}
         */
        this.PageNumber = null;

        /**
         * Specifies the number of items to display per page. default: 10. value range: 1-100.
         * @type {number || null}
         */
        this.PageSize = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.ProjectId = 'ProjectId' in params ? params.ProjectId : null;
        this.InstanceKey = 'InstanceKey' in params ? params.InstanceKey : null;
        this.TimeZone = 'TimeZone' in params ? params.TimeZone : null;
        this.PageNumber = 'PageNumber' in params ? params.PageNumber : null;
        this.PageSize = 'PageSize' in params ? params.PageSize : null;

    }
}

/**
 * Explores data script file tree node.
 * @class
 */
class CodeFolderNode extends  AbstractModel {
    constructor(){
        super();

        /**
         * Unique identifier
         * @type {string || null}
         */
        this.Id = null;

        /**
         * Name
         * @type {string || null}
         */
        this.Title = null;

        /**
         * folder type, script.
         * @type {string || null}
         */
        this.Type = null;

        /**
         * Whether it is a leaf node.
         * @type {boolean || null}
         */
        this.IsLeaf = null;

        /**
         * Business parameters	
	

         * @type {string || null}
         */
        this.Params = null;

        /**
         * Permission scope: SHARED, PRIVATE.

         * @type {string || null}
         */
        this.AccessScope = null;

        /**
         * Node path.
         * @type {string || null}
         */
        this.Path = null;

        /**
         * Specifies the uin of the responsible person for the directory/file.
         * @type {string || null}
         */
        this.OwnerUin = null;

        /**
         * Creator
         * @type {string || null}
         */
        this.CreateUserUin = null;

        /**
         * Specifies the permission of the current user for nodes.	

         * @type {string || null}
         */
        this.NodePermission = null;

        /**
         * Sub-node list


         * @type {Array.<CodeFolderNode> || null}
         */
        this.Children = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Id = 'Id' in params ? params.Id : null;
        this.Title = 'Title' in params ? params.Title : null;
        this.Type = 'Type' in params ? params.Type : null;
        this.IsLeaf = 'IsLeaf' in params ? params.IsLeaf : null;
        this.Params = 'Params' in params ? params.Params : null;
        this.AccessScope = 'AccessScope' in params ? params.AccessScope : null;
        this.Path = 'Path' in params ? params.Path : null;
        this.OwnerUin = 'OwnerUin' in params ? params.OwnerUin : null;
        this.CreateUserUin = 'CreateUserUin' in params ? params.CreateUserUin : null;
        this.NodePermission = 'NodePermission' in params ? params.NodePermission : null;

        if (params.Children) {
            this.Children = new Array();
            for (let z in params.Children) {
                let obj = new CodeFolderNode();
                obj.deserialize(params.Children[z]);
                this.Children.push(obj);
            }
        }

    }
}

/**
 * UpdateOpsAlarmRule response structure.
 * @class
 */
class UpdateOpsAlarmRuleResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Indicates whether the update is successful.
true: update successful. false: failed to update.
         * @type {ModifyAlarmRuleResult || null}
         */
        this.Data = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Data) {
            let obj = new ModifyAlarmRuleResult();
            obj.deserialize(params.Data)
            this.Data = obj;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * UpdateSQLScript response structure.
 * @class
 */
class UpdateSQLScriptResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Result


         * @type {SQLScript || null}
         */
        this.Data = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Data) {
            let obj = new SQLScript();
            obj.deserialize(params.Data)
            this.Data = obj;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * SQL exploration file/folder operation result.
 * @class
 */
class SQLContentActionResult extends  AbstractModel {
    constructor(){
        super();

        /**
         * Whether the operation is successful


         * @type {boolean || null}
         */
        this.Status = null;

        /**
         * Folder ID.


         * @type {string || null}
         */
        this.FolderId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Status = 'Status' in params ? params.Status : null;
        this.FolderId = 'FolderId' in params ? params.FolderId : null;

    }
}

/**
 * Folder creation result.
 * @class
 */
class CreateFolderResult extends  AbstractModel {
    constructor(){
        super();

        /**
         * Folder ID upon successful creation. error will be reported if creation failed.
         * @type {string || null}
         */
        this.FolderId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.FolderId = 'FolderId' in params ? params.FolderId : null;

    }
}

/**
 * Disable sql execution result.
 * @class
 */
class SQLStopResult extends  AbstractModel {
    constructor(){
        super();

        /**
         * Success status


         * @type {boolean || null}
         */
        this.Status = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Status = 'Status' in params ? params.Status : null;

    }
}

/**
 * ListWorkflows request structure.
 * @class
 */
class ListWorkflowsRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Project ID.
         * @type {string || null}
         */
        this.ProjectId = null;

        /**
         * Specifies the data page number of the request. default value is 1. valid values: equal to or greater than 1.
         * @type {number || null}
         */
        this.PageNumber = null;

        /**
         * Specifies the number of data records displayed per page. default: 10. value range: 10 to 200.
         * @type {number || null}
         */
        this.PageSize = null;

        /**
         * Search keywords.
         * @type {string || null}
         */
        this.Keyword = null;

        /**
         * Workflow folder.
         * @type {string || null}
         */
        this.ParentFolderPath = null;

        /**
         * Workflow type. valid values: cycle and manual.
         * @type {string || null}
         */
        this.WorkflowType = null;

        /**
         * bundleId item.
         * @type {string || null}
         */
        this.BundleId = null;

        /**
         * Owner ID
         * @type {string || null}
         */
        this.OwnerUin = null;

        /**
         * Creator ID.
         * @type {string || null}
         */
        this.CreateUserUin = null;

        /**
         * Modification time interval yyyy-MM-dd HH:MM:ss. fill in two times in the array.
         * @type {Array.<string> || null}
         */
        this.ModifyTime = null;

        /**
         * Creation time range yyyy-MM-dd HH:MM:ss. two times must be filled in the array.
         * @type {Array.<string> || null}
         */
        this.CreateTime = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.ProjectId = 'ProjectId' in params ? params.ProjectId : null;
        this.PageNumber = 'PageNumber' in params ? params.PageNumber : null;
        this.PageSize = 'PageSize' in params ? params.PageSize : null;
        this.Keyword = 'Keyword' in params ? params.Keyword : null;
        this.ParentFolderPath = 'ParentFolderPath' in params ? params.ParentFolderPath : null;
        this.WorkflowType = 'WorkflowType' in params ? params.WorkflowType : null;
        this.BundleId = 'BundleId' in params ? params.BundleId : null;
        this.OwnerUin = 'OwnerUin' in params ? params.OwnerUin : null;
        this.CreateUserUin = 'CreateUserUin' in params ? params.CreateUserUin : null;
        this.ModifyTime = 'ModifyTime' in params ? params.ModifyTime : null;
        this.CreateTime = 'CreateTime' in params ? params.CreateTime : null;

    }
}

/**
 * RunSQLScript request structure.
 * @class
 */
class RunSQLScriptRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Script id.
         * @type {string || null}
         */
        this.ScriptId = null;

        /**
         * Project ID.
         * @type {string || null}
         */
        this.ProjectId = null;

        /**
         * Script content. executed by default if not transmitted. requires Base64 encoding if transmitted.
         * @type {string || null}
         */
        this.ScriptContent = null;

        /**
         * Advanced running parameter, JSON format base64 encode.
         * @type {string || null}
         */
        this.Params = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.ScriptId = 'ScriptId' in params ? params.ScriptId : null;
        this.ProjectId = 'ProjectId' in params ? params.ProjectId : null;
        this.ScriptContent = 'ScriptContent' in params ? params.ScriptContent : null;
        this.Params = 'Params' in params ? params.Params : null;

    }
}

/**
 * ListDownstreamOpsTasks response structure.
 * @class
 */
class ListDownstreamOpsTasksResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Downstream dependency description.
         * @type {ChildDependencyConfigPage || null}
         */
        this.Data = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Data) {
            let obj = new ChildDependencyConfigPage();
            obj.deserialize(params.Data)
            this.Data = obj;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Scheduling task instance details.
 * @class
 */
class TaskInstanceDetail extends  AbstractModel {
    constructor(){
        super();

        /**
         * Specifies the project id.

         * @type {string || null}
         */
        this.ProjectId = null;

        /**
         * **Instance unique id**.

         * @type {string || null}
         */
        this.InstanceKey = null;

        /**
         * Folder ID.


         * @type {string || null}
         */
        this.FolderId = null;

        /**
         * Specifies the folder name.

         * @type {string || null}
         */
        this.FolderName = null;

        /**
         * Workflow ID.

         * @type {string || null}
         */
        this.WorkflowId = null;

        /**
         * Workflow name.


         * @type {string || null}
         */
        this.WorkflowName = null;

        /**
         * Task ID


         * @type {string || null}
         */
        this.TaskId = null;

        /**
         * Task name.


         * @type {string || null}
         */
        this.TaskName = null;

        /**
         * Specifies the id corresponding to taskType.
         * @type {number || null}
         */
        this.TaskTypeId = null;

        /**
         * Task type


         * @type {string || null}
         */
        this.TaskType = null;

        /**
         * Task Cycle Type

* ONEOFF_CYCLE: One-time

* YEAR_CYCLE: Yearly

* MONTH_CYCLE: Monthly

* WEEK_CYCLE: Weekly

* DAY_CYCLE: Daily

* HOUR_CYCLE: Hourly

* MINUTE_CYCLE: Minute-level

* CRONTAB_CYCLE: Crontab expression-based
         * @type {string || null}
         */
        this.CycleType = null;

        /**
         * Specifies the instance data time.

         * @type {string || null}
         */
        this.CurRunDate = null;

        /**
         * Instance status.
-WAIT_EVENT: wait for event.
-WAIT_UPSTREAM: waiting for upstream.
- WAIT_RUN: awaiting execution.
-RUNNING. specifies the running status.
- SKIP_RUNNING: specifies whether to SKIP RUNNING.
- FAILED_RETRY: RETRY on failure.
-EXPIRED: indicates a failure.
-COMPLETED: success.

         * @type {string || null}
         */
        this.InstanceState = null;

        /**
         * Specifies the instance type.

-0 indicates the replenishment type.
-Indicates a periodic instance.
-2 indicates a non-periodic instance.

         * @type {number || null}
         */
        this.InstanceType = null;

        /**
         * owner uin list.


         * @type {Array.<string> || null}
         */
        this.OwnerUinList = null;

        /**
         * Cumulative running times.

         * @type {number || null}
         */
        this.TotalRunNum = null;

        /**
         * Retry count limit when execution fails each time.

         * @type {number || null}
         */
        this.TryLimit = null;

        /**
         * **Failure Retry Count** - The number of retry attempts after a failure. When the instance is triggered again through methods such as manual rerun or backfill, this counter is reset to 0 and starts counting again.
         * @type {number || null}
         */
        this.Tries = null;

        /**
         * Time spent, in milliseconds.

         * @type {number || null}
         */
        this.CostTime = null;

        /**
         * Start time.

         * @type {string || null}
         */
        this.StartTime = null;

        /**
         * Operation completion time.

         * @type {string || null}
         */
        this.EndTime = null;

        /**
         * Scheduled dispatch time.

         * @type {string || null}
         */
        this.SchedulerTime = null;

        /**
         * Latest update time of the instance. format: yyyy-MM-dd HH:MM:ss.

         * @type {string || null}
         */
        this.LastUpdateTime = null;

        /**
         * Execution resource group ID.

         * @type {string || null}
         */
        this.ExecutorGroupId = null;

        /**
         * Resource group name.

         * @type {string || null}
         */
        this.ExecutorGroupName = null;

        /**
         * Brief task failure information.

         * @type {string || null}
         */
        this.JobErrorMsg = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.ProjectId = 'ProjectId' in params ? params.ProjectId : null;
        this.InstanceKey = 'InstanceKey' in params ? params.InstanceKey : null;
        this.FolderId = 'FolderId' in params ? params.FolderId : null;
        this.FolderName = 'FolderName' in params ? params.FolderName : null;
        this.WorkflowId = 'WorkflowId' in params ? params.WorkflowId : null;
        this.WorkflowName = 'WorkflowName' in params ? params.WorkflowName : null;
        this.TaskId = 'TaskId' in params ? params.TaskId : null;
        this.TaskName = 'TaskName' in params ? params.TaskName : null;
        this.TaskTypeId = 'TaskTypeId' in params ? params.TaskTypeId : null;
        this.TaskType = 'TaskType' in params ? params.TaskType : null;
        this.CycleType = 'CycleType' in params ? params.CycleType : null;
        this.CurRunDate = 'CurRunDate' in params ? params.CurRunDate : null;
        this.InstanceState = 'InstanceState' in params ? params.InstanceState : null;
        this.InstanceType = 'InstanceType' in params ? params.InstanceType : null;
        this.OwnerUinList = 'OwnerUinList' in params ? params.OwnerUinList : null;
        this.TotalRunNum = 'TotalRunNum' in params ? params.TotalRunNum : null;
        this.TryLimit = 'TryLimit' in params ? params.TryLimit : null;
        this.Tries = 'Tries' in params ? params.Tries : null;
        this.CostTime = 'CostTime' in params ? params.CostTime : null;
        this.StartTime = 'StartTime' in params ? params.StartTime : null;
        this.EndTime = 'EndTime' in params ? params.EndTime : null;
        this.SchedulerTime = 'SchedulerTime' in params ? params.SchedulerTime : null;
        this.LastUpdateTime = 'LastUpdateTime' in params ? params.LastUpdateTime : null;
        this.ExecutorGroupId = 'ExecutorGroupId' in params ? params.ExecutorGroupId : null;
        this.ExecutorGroupName = 'ExecutorGroupName' in params ? params.ExecutorGroupName : null;
        this.JobErrorMsg = 'JobErrorMsg' in params ? params.JobErrorMsg : null;

    }
}

/**
 * ListTaskInstances response structure.
 * @class
 */
class ListTaskInstancesResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Instance result set.
         * @type {TaskInstancePage || null}
         */
        this.Data = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Data) {
            let obj = new TaskInstancePage();
            obj.deserialize(params.Data)
            this.Data = obj;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * UpdateResourceFolder response structure.
 * @class
 */
class UpdateResourceFolderResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Specifies the update folder result. if the update fails, an error will be reported.
         * @type {UpdateFolderResult || null}
         */
        this.Data = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Data) {
            let obj = new UpdateFolderResult();
            obj.deserialize(params.Data)
            this.Data = obj;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Submits the result of a data development task.
 * @class
 */
class SubmitTaskResult extends  AbstractModel {
    constructor(){
        super();

        /**
         * Generated task version ID.

         * @type {string || null}
         */
        this.VersionId = null;

        /**
         * Submission status.
         * @type {boolean || null}
         */
        this.Status = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.VersionId = 'VersionId' in params ? params.VersionId : null;
        this.Status = 'Status' in params ? params.Status : null;

    }
}

/**
 * ListSQLScriptRuns request structure.
 * @class
 */
class ListSQLScriptRunsRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Project ID.
         * @type {string || null}
         */
        this.ProjectId = null;

        /**
         * Script id.
         * @type {string || null}
         */
        this.ScriptId = null;

        /**
         * Task ID.
         * @type {string || null}
         */
        this.JobId = null;

        /**
         * Search keywords.
         * @type {string || null}
         */
        this.SearchWord = null;

        /**
         * Specifies the executor ID.
         * @type {string || null}
         */
        this.ExecuteUserUin = null;

        /**
         * Start time.
         * @type {string || null}
         */
        this.StartTime = null;

        /**
         * End time.
         * @type {string || null}
         */
        this.EndTime = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.ProjectId = 'ProjectId' in params ? params.ProjectId : null;
        this.ScriptId = 'ScriptId' in params ? params.ScriptId : null;
        this.JobId = 'JobId' in params ? params.JobId : null;
        this.SearchWord = 'SearchWord' in params ? params.SearchWord : null;
        this.ExecuteUserUin = 'ExecuteUserUin' in params ? params.ExecuteUserUin : null;
        this.StartTime = 'StartTime' in params ? params.StartTime : null;
        this.EndTime = 'EndTime' in params ? params.EndTime : null;

    }
}

/**
 * CreateDataBackfillPlan request structure.
 * @class
 */
class CreateDataBackfillPlanRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Project ID
         * @type {string || null}
         */
        this.ProjectId = null;

        /**
         * Backfill task collection.
         * @type {Array.<string> || null}
         */
        this.TaskIds = null;

        /**
         * Specifies the data time configuration for the backfill task.
         * @type {Array.<DataBackfillRange> || null}
         */
        this.DataBackfillRangeList = null;

        /**
         * Time zone, default UTC+8.
         * @type {string || null}
         */
        this.TimeZone = null;

        /**
         * Backfill plan name. if left empty, a string of characters is randomly generated by system.
         * @type {string || null}
         */
        this.DataBackfillPlanName = null;

        /**
         * Check parent task type. valid values: NONE (do not check ALL), ALL (check ALL upstream parent tasks), MAKE_SCOPE (only check in the currently selected tasks of the backfill plan). default: NONE (do not check).
         * @type {string || null}
         */
        this.CheckParentType = null;

        /**
         * Specifies whether to ignore event dependency for backfill. default true.
         * @type {boolean || null}
         */
        this.SkipEventListening = null;

        /**
         * Custom workflow self-dependency. valid values: yes or no. if not configured, use the original workflow self-dependency.
         * @type {string || null}
         */
        this.RedefineSelfWorkflowDependency = null;

        /**
         * Customizes the degree of concurrency for instance running. if without configuring, use the existing self-dependent of the task.
         * @type {number || null}
         */
        this.RedefineParallelNum = null;

        /**
         * Scheduling resource group id. if left empty, indicates usage of the original task scheduling execution resource group.
         * @type {string || null}
         */
        this.SchedulerResourceGroupId = null;

        /**
         * Integration task resource group id. indicates usage of the original task scheduling execution resource group if empty.
         * @type {string || null}
         */
        this.IntegrationResourceGroupId = null;

        /**
         * Custom parameter. re-specifies the task's parameters to facilitate the execution of new logic by replenished instances.
         * @type {Array.<KVPair> || null}
         */
        this.RedefineParamList = null;

        /**
         * Backfill Execution Order - The execution order for backfill instances based on their data time. Effective only when both conditions are met:

1. Must be the same cycle task.

2. Priority is given to dependency order. If no dependencies apply, execution follows the configured order.

Valid values:

-NORMAL: No specific order (default)

-ORDER: Execute in chronological order

-REVERSE: Execute in reverse chronological order
         * @type {string || null}
         */
        this.DataTimeOrder = null;

        /**
         * Backfill Instance Regeneration Cycle - If set, this will redefine the generation cycle of backfill task instances. Currently, only daily instances can be converted into instances generated on the first day of each month.

Valid value:

MONTH_CYCLE: Monthly
         * @type {string || null}
         */
        this.RedefineCycleType = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.ProjectId = 'ProjectId' in params ? params.ProjectId : null;
        this.TaskIds = 'TaskIds' in params ? params.TaskIds : null;

        if (params.DataBackfillRangeList) {
            this.DataBackfillRangeList = new Array();
            for (let z in params.DataBackfillRangeList) {
                let obj = new DataBackfillRange();
                obj.deserialize(params.DataBackfillRangeList[z]);
                this.DataBackfillRangeList.push(obj);
            }
        }
        this.TimeZone = 'TimeZone' in params ? params.TimeZone : null;
        this.DataBackfillPlanName = 'DataBackfillPlanName' in params ? params.DataBackfillPlanName : null;
        this.CheckParentType = 'CheckParentType' in params ? params.CheckParentType : null;
        this.SkipEventListening = 'SkipEventListening' in params ? params.SkipEventListening : null;
        this.RedefineSelfWorkflowDependency = 'RedefineSelfWorkflowDependency' in params ? params.RedefineSelfWorkflowDependency : null;
        this.RedefineParallelNum = 'RedefineParallelNum' in params ? params.RedefineParallelNum : null;
        this.SchedulerResourceGroupId = 'SchedulerResourceGroupId' in params ? params.SchedulerResourceGroupId : null;
        this.IntegrationResourceGroupId = 'IntegrationResourceGroupId' in params ? params.IntegrationResourceGroupId : null;

        if (params.RedefineParamList) {
            this.RedefineParamList = new Array();
            for (let z in params.RedefineParamList) {
                let obj = new KVPair();
                obj.deserialize(params.RedefineParamList[z]);
                this.RedefineParamList.push(obj);
            }
        }
        this.DataTimeOrder = 'DataTimeOrder' in params ? params.DataTimeOrder : null;
        this.RedefineCycleType = 'RedefineCycleType' in params ? params.RedefineCycleType : null;

    }
}

/**
 * GetTaskInstance request structure.
 * @class
 */
class GetTaskInstanceRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Project id.
         * @type {string || null}
         */
        this.ProjectId = null;

        /**
         * Instance unique id, can be obtained through ListInstances.
         * @type {string || null}
         */
        this.InstanceKey = null;

        /**
         * **Time zone** timeZone, specifies the time zone of the passed in time string. default UTC+8.
         * @type {string || null}
         */
        this.TimeZone = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.ProjectId = 'ProjectId' in params ? params.ProjectId : null;
        this.InstanceKey = 'InstanceKey' in params ? params.InstanceKey : null;
        this.TimeZone = 'TimeZone' in params ? params.TimeZone : null;

    }
}

/**
 * Describes the dependency task information.
 * @class
 */
class TaskDependDto extends  AbstractModel {
    constructor(){
        super();

        /**
         * Task ID

         * @type {string || null}
         */
        this.TaskId = null;

        /**
         * Task name.

         * @type {string || null}
         */
        this.TaskName = null;

        /**
         * Workflow id.
         * @type {string || null}
         */
        this.WorkflowId = null;

        /**
         * Workflow name.

         * @type {string || null}
         */
        this.WorkflowName = null;

        /**
         * Project ID.

         * @type {string || null}
         */
        this.ProjectId = null;

        /**
         * Task Status:

* N: New

* Y: Scheduling

* F: Offline

* O: Paused

* T: Offlining (in the process of being taken offline)

I* NVALID: Invalid
         * @type {string || null}
         */
        this.Status = null;

        /**
         * Task type id.
         * @type {number || null}
         */
        this.TaskTypeId = null;

        /**
         * Task type description.
-20 : universal data synchronization.
 - 25 :  ETLTaskType
 - 26 :  ETLTaskType
 - 30 :  python
 - 31 :  pyspark
 - 34 :  hivesql
 - 35 :  shell
 - 36 :  sparksql
 - 21 :  jdbcsql
 - 32 :  dlc
 - 33 :  ImpalaTaskType
 - 40 :  CDWTaskType
 - 41 :  kettle
 - 42 :  TCHouse-X
 - 43 :  TCHouse-X SQL
 - 46 :  dlcsparkTaskType
 - 47 :  TiOneMachineLearningTaskType
 - 48 :  Trino
 - 50 :  DLCPyspark
 - 23 :  TencentDistributedSQL
 - 39 :  spark
 - 92 :  MRTaskType
 - 38 :  ShellScript
 - 70 :  HiveSQLScrip
-130: branch.
-131: merge.
-132: Notebook 
-133: SSH node.
 - 134 :  StarRocks
 - 137 :  For-each
-10000 : custom business common.
         * @type {string || null}
         */
        this.TaskTypeDesc = null;

        /**
         * Specifies scheduling plan display description information.

         * @type {string || null}
         */
        this.ScheduleDesc = null;

        /**
         * Task start time.
         * @type {string || null}
         */
        this.StartTime = null;

        /**
         * Task end time.
         * @type {string || null}
         */
        this.EndTime = null;

        /**
         * Delay time.
         * @type {number || null}
         */
        this.DelayTime = null;

        /**
         * Cycle Type, Default: D
Supported types:
* O: One-time

* Y: Yearly

* M: Monthly

* W: Weekly

* D: Daily

* H: Hourly

* I: Minute

* C: Crontab expression type
         * @type {string || null}
         */
        this.CycleType = null;

        /**
         * Owner ID
         * @type {string || null}
         */
        this.OwnerUin = null;

        /**
         * Elastic cycle configuration.
         * @type {string || null}
         */
        this.TaskAction = null;

        /**
         * Initialization strategy for scheduling.
         * @type {string || null}
         */
        this.InitStrategy = null;

        /**
         * crontab expression.
         * @type {string || null}
         */
        this.CrontabExpression = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TaskId = 'TaskId' in params ? params.TaskId : null;
        this.TaskName = 'TaskName' in params ? params.TaskName : null;
        this.WorkflowId = 'WorkflowId' in params ? params.WorkflowId : null;
        this.WorkflowName = 'WorkflowName' in params ? params.WorkflowName : null;
        this.ProjectId = 'ProjectId' in params ? params.ProjectId : null;
        this.Status = 'Status' in params ? params.Status : null;
        this.TaskTypeId = 'TaskTypeId' in params ? params.TaskTypeId : null;
        this.TaskTypeDesc = 'TaskTypeDesc' in params ? params.TaskTypeDesc : null;
        this.ScheduleDesc = 'ScheduleDesc' in params ? params.ScheduleDesc : null;
        this.StartTime = 'StartTime' in params ? params.StartTime : null;
        this.EndTime = 'EndTime' in params ? params.EndTime : null;
        this.DelayTime = 'DelayTime' in params ? params.DelayTime : null;
        this.CycleType = 'CycleType' in params ? params.CycleType : null;
        this.OwnerUin = 'OwnerUin' in params ? params.OwnerUin : null;
        this.TaskAction = 'TaskAction' in params ? params.TaskAction : null;
        this.InitStrategy = 'InitStrategy' in params ? params.InitStrategy : null;
        this.CrontabExpression = 'CrontabExpression' in params ? params.CrontabExpression : null;

    }
}

/**
 * ListUpstreamTasks response structure.
 * @class
 */
class ListUpstreamTasksResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Upstream task details.
         * @type {DependencyConfigPage || null}
         */
        this.Data = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Data) {
            let obj = new DependencyConfigPage();
            obj.deserialize(params.Data)
            this.Data = obj;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DeleteWorkflowFolder request structure.
 * @class
 */
class DeleteWorkflowFolderRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Project ID.
         * @type {string || null}
         */
        this.ProjectId = null;

        /**
         * Folder ID. Obtain through the ListWorkflowFolders API.
         * @type {string || null}
         */
        this.FolderId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.ProjectId = 'ProjectId' in params ? params.ProjectId : null;
        this.FolderId = 'FolderId' in params ? params.FolderId : null;

    }
}

/**
 * ListSQLFolderContents request structure.
 * @class
 */
class ListSQLFolderContentsRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Project ID.

         * @type {string || null}
         */
        this.ProjectId = null;

        /**
         * Parent folder path, /aaa/bbb/ccc. path header must include a slash. pass / to query the root directory.
         * @type {string || null}
         */
        this.ParentFolderPath = null;

        /**
         * Folder name or script name search.
         * @type {string || null}
         */
        this.Keyword = null;

        /**
         * Queries only the folder.
         * @type {boolean || null}
         */
        this.OnlyFolderNode = null;

        /**
         * Specifies whether to query only scripts created by the user themselves.
         * @type {boolean || null}
         */
        this.OnlyUserSelfScript = null;

        /**
         * Access permission: SHARED, PRIVATE.
         * @type {string || null}
         */
        this.AccessScope = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.ProjectId = 'ProjectId' in params ? params.ProjectId : null;
        this.ParentFolderPath = 'ParentFolderPath' in params ? params.ParentFolderPath : null;
        this.Keyword = 'Keyword' in params ? params.Keyword : null;
        this.OnlyFolderNode = 'OnlyFolderNode' in params ? params.OnlyFolderNode : null;
        this.OnlyUserSelfScript = 'OnlyUserSelfScript' in params ? params.OnlyUserSelfScript : null;
        this.AccessScope = 'AccessScope' in params ? params.AccessScope : null;

    }
}

/**
 * RunSQLScript response structure.
 * @class
 */
class RunSQLScriptResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Explores data tasks.
         * @type {JobDto || null}
         */
        this.Data = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Data) {
            let obj = new JobDto();
            obj.deserialize(params.Data)
            this.Data = obj;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DeleteSQLScript request structure.
 * @class
 */
class DeleteSQLScriptRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Script Id.
         * @type {string || null}
         */
        this.ScriptId = null;

        /**
         * Project ID.

         * @type {string || null}
         */
        this.ProjectId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.ScriptId = 'ScriptId' in params ? params.ScriptId : null;
        this.ProjectId = 'ProjectId' in params ? params.ProjectId : null;

    }
}

/**
 * GetOpsAlarmRule request structure.
 * @class
 */
class GetOpsAlarmRuleRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Project ID.
         * @type {string || null}
         */
        this.ProjectId = null;

        /**
         * Specifies the unique id of the Alarm rule.
         * @type {string || null}
         */
        this.AlarmRuleId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.ProjectId = 'ProjectId' in params ? params.ProjectId : null;
        this.AlarmRuleId = 'AlarmRuleId' in params ? params.AlarmRuleId : null;

    }
}

/**
 * ListTasks response structure.
 * @class
 */
class ListTasksResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Describes the task pagination information.
         * @type {ListTaskInfo || null}
         */
        this.Data = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Data) {
            let obj = new ListTaskInfo();
            obj.deserialize(params.Data)
            this.Data = obj;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * GetOpsTaskCode response structure.
 * @class
 */
class GetOpsTaskCodeResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Retrieves the task code result.
         * @type {TaskCode || null}
         */
        this.Data = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Data) {
            let obj = new TaskCode();
            obj.deserialize(params.Data)
            this.Data = obj;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * ListWorkflows response structure.
 * @class
 */
class ListWorkflowsResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Describes workflow pagination information.
         * @type {ListWorkflowInfo || null}
         */
        this.Data = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Data) {
            let obj = new ListWorkflowInfo();
            obj.deserialize(params.Data)
            this.Data = obj;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * CreateTask request structure.
 * @class
 */
class CreateTaskRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Project ID.
         * @type {string || null}
         */
        this.ProjectId = null;

        /**
         * The basic attributes of the task.
         * @type {CreateTaskBaseAttribute || null}
         */
        this.TaskBaseAttribute = null;

        /**
         * Task configurations.
         * @type {CreateTaskConfiguration || null}
         */
        this.TaskConfiguration = null;

        /**
         * Task scheduling configuration.
         * @type {CreateTaskSchedulerConfiguration || null}
         */
        this.TaskSchedulerConfiguration = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.ProjectId = 'ProjectId' in params ? params.ProjectId : null;

        if (params.TaskBaseAttribute) {
            let obj = new CreateTaskBaseAttribute();
            obj.deserialize(params.TaskBaseAttribute)
            this.TaskBaseAttribute = obj;
        }

        if (params.TaskConfiguration) {
            let obj = new CreateTaskConfiguration();
            obj.deserialize(params.TaskConfiguration)
            this.TaskConfiguration = obj;
        }

        if (params.TaskSchedulerConfiguration) {
            let obj = new CreateTaskSchedulerConfiguration();
            obj.deserialize(params.TaskSchedulerConfiguration)
            this.TaskSchedulerConfiguration = obj;
        }

    }
}

/**
 * Alarm rule project fluctuation rate Alarm configuration information.
 * @class
 */
class ProjectInstanceStatisticsAlarmInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Alarm type

projectFailureInstanceUpwardFluctuationAlarm: specifies the upward fluctuation alert for failed instances.

projectSuccessInstanceDownwardFluctuationAlarm: specifies the downward fluctuation alert for successful instances.
         * @type {string || null}
         */
        this.AlarmType = null;

        /**
         * Alarm threshold for the downward fluctuation ratio of the number of successful instances.
Alarm threshold for the upward fluctuation ratio of the number of failed instances.
         * @type {number || null}
         */
        this.InstanceThresholdCountPercent = null;

        /**
         * Cumulative instance number fluctuation threshold.
         * @type {number || null}
         */
        this.InstanceThresholdCount = null;

        /**
         * Stability threshold count (debounce configuration statistical cycle count).
         * @type {number || null}
         */
        this.StabilizeThreshold = null;

        /**
         * Stability statistical cycle (anti-shake configuration statistical cycle count).
         * @type {number || null}
         */
        this.StabilizeStatisticsCycle = null;

        /**
         * Specifies whether to use cumulative calculation. valid values: false (consecutive), true (cumulative).
         * @type {boolean || null}
         */
        this.IsCumulant = null;

        /**
         * Cumulative number of instances for the current day.
Specifies the downward fluctuation of failed instance count on the day.
         * @type {number || null}
         */
        this.InstanceCount = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.AlarmType = 'AlarmType' in params ? params.AlarmType : null;
        this.InstanceThresholdCountPercent = 'InstanceThresholdCountPercent' in params ? params.InstanceThresholdCountPercent : null;
        this.InstanceThresholdCount = 'InstanceThresholdCount' in params ? params.InstanceThresholdCount : null;
        this.StabilizeThreshold = 'StabilizeThreshold' in params ? params.StabilizeThreshold : null;
        this.StabilizeStatisticsCycle = 'StabilizeStatisticsCycle' in params ? params.StabilizeStatisticsCycle : null;
        this.IsCumulant = 'IsCumulant' in params ? params.IsCumulant : null;
        this.InstanceCount = 'InstanceCount' in params ? params.InstanceCount : null;

    }
}

/**
 * ListCodeFolderContents response structure.
 * @class
 */
class ListCodeFolderContentsResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Result

         * @type {Array.<CodeFolderNode> || null}
         */
        this.Data = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Data) {
            this.Data = new Array();
            for (let z in params.Data) {
                let obj = new CodeFolderNode();
                obj.deserialize(params.Data[z]);
                this.Data.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * GetTaskCode response structure.
 * @class
 */
class GetTaskCodeResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Retrieves the task code result.
         * @type {TaskCodeResult || null}
         */
        this.Data = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Data) {
            let obj = new TaskCodeResult();
            obj.deserialize(params.Data)
            this.Data = obj;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Parameter passing - reference parameter.
 * @class
 */
class InTaskParameter extends  AbstractModel {
    constructor(){
        super();

        /**
         * Parameter name.

         * @type {string || null}
         */
        this.ParamKey = null;

        /**
         * Parameter Description: The format is ProjectIdentifier.TaskName.ParameterName
Example: project_wedata_1.sh_250820_104107.pp_out
         * @type {string || null}
         */
        this.ParamDesc = null;

        /**
         * Parent Task ID

         * @type {string || null}
         */
        this.FromTaskId = null;

        /**
         * Parent task parameter key.

         * @type {string || null}
         */
        this.FromParamKey = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.ParamKey = 'ParamKey' in params ? params.ParamKey : null;
        this.ParamDesc = 'ParamDesc' in params ? params.ParamDesc : null;
        this.FromTaskId = 'FromTaskId' in params ? params.FromTaskId : null;
        this.FromParamKey = 'FromParamKey' in params ? params.FromParamKey : null;

    }
}

/**
 * Delete resource file result.
 * @class
 */
class DeleteResourceFileResult extends  AbstractModel {
    constructor(){
        super();

        /**
         * true
         * @type {boolean || null}
         */
        this.Status = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Status = 'Status' in params ? params.Status : null;

    }
}

/**
 * UpdateTask response structure.
 * @class
 */
class UpdateTaskResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Task ID
         * @type {UpdateTaskResult || null}
         */
        this.Data = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Data) {
            let obj = new UpdateTaskResult();
            obj.deserialize(params.Data)
            this.Data = obj;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DeleteSQLFolder response structure.
 * @class
 */
class DeleteSQLFolderResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Operation result.
         * @type {SQLContentActionResult || null}
         */
        this.Data = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Data) {
            let obj = new SQLContentActionResult();
            obj.deserialize(params.Data)
            this.Data = obj;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * GetTaskVersion response structure.
 * @class
 */
class GetTaskVersionResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Version detail.

         * @type {TaskVersionDetail || null}
         */
        this.Data = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Data) {
            let obj = new TaskVersionDetail();
            obj.deserialize(params.Data)
            this.Data = obj;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * ListResourceFolders response structure.
 * @class
 */
class ListResourceFoldersResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Paginated resource folder query result.
         * @type {ResourceFolderPage || null}
         */
        this.Data = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Data) {
            let obj = new ResourceFolderPage();
            obj.deserialize(params.Data)
            this.Data = obj;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * GetSQLScript response structure.
 * @class
 */
class GetSQLScriptResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Script details.
         * @type {SQLScript || null}
         */
        this.Data = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Data) {
            let obj = new SQLScript();
            obj.deserialize(params.Data)
            this.Data = obj;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Describes the version list information of the task.
 * @class
 */
class TaskVersionDetail extends  AbstractModel {
    constructor(){
        super();

        /**
         * Creation time.
         * @type {string || null}
         */
        this.CreateTime = null;

        /**
         * Version number


         * @type {string || null}
         */
        this.VersionNum = null;

        /**
         * Specifies the version creator.

         * @type {string || null}
         */
        this.CreateUserUin = null;

        /**
         * Specifies the version Id to save.

         * @type {string || null}
         */
        this.VersionId = null;

        /**
         * Version description

         * @type {string || null}
         */
        this.VersionRemark = null;

        /**
         * Approval status (only for submit version).

         * @type {string || null}
         */
        this.ApproveStatus = null;

        /**
         * Production status  (only for submit version).
         * @type {string || null}
         */
        this.ApproveTime = null;

        /**
         * Describes the task detail of the version.

         * @type {Task || null}
         */
        this.Task = null;

        /**
         * Approver Id.
         * @type {string || null}
         */
        this.ApproveUserUin = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.CreateTime = 'CreateTime' in params ? params.CreateTime : null;
        this.VersionNum = 'VersionNum' in params ? params.VersionNum : null;
        this.CreateUserUin = 'CreateUserUin' in params ? params.CreateUserUin : null;
        this.VersionId = 'VersionId' in params ? params.VersionId : null;
        this.VersionRemark = 'VersionRemark' in params ? params.VersionRemark : null;
        this.ApproveStatus = 'ApproveStatus' in params ? params.ApproveStatus : null;
        this.ApproveTime = 'ApproveTime' in params ? params.ApproveTime : null;

        if (params.Task) {
            let obj = new Task();
            obj.deserialize(params.Task)
            this.Task = obj;
        }
        this.ApproveUserUin = 'ApproveUserUin' in params ? params.ApproveUserUin : null;

    }
}

/**
 * Specifies the update folder result.
 * @class
 */
class UpdateFolderResult extends  AbstractModel {
    constructor(){
        super();

        /**
         * Update status. true indicates update succeeded. false indicates update failed.
         * @type {boolean || null}
         */
        this.Status = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Status = 'Status' in params ? params.Status : null;

    }
}

/**
 * ListAlarmMessages request structure.
 * @class
 */
class ListAlarmMessagesRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Project id.
         * @type {string || null}
         */
        this.ProjectId = null;

        /**
         * Page number for pagination, minimum value is 1.
         * @type {number || null}
         */
        this.PageNumber = null;

        /**
         * Specifies the number of items displayed per page. maximum value: 100.
         * @type {number || null}
         */
        this.PageSize = null;

        /**
         * Starting Alarm time. format: yyyy-MM-dd HH:MM:ss.
         * @type {string || null}
         */
        this.StartTime = null;

        /**
         * Specifies the Alarm end time in the format yyyy-MM-dd HH:MM:ss.
         * @type {string || null}
         */
        this.EndTime = null;

        /**
         * Alarm level.
         * @type {number || null}
         */
        this.AlarmLevel = null;

        /**
         * Alert recipient Id.
         * @type {string || null}
         */
        this.AlarmRecipientId = null;

        /**
         * For incoming and returned filter time zone, default UTC+8.
         * @type {string || null}
         */
        this.TimeZone = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.ProjectId = 'ProjectId' in params ? params.ProjectId : null;
        this.PageNumber = 'PageNumber' in params ? params.PageNumber : null;
        this.PageSize = 'PageSize' in params ? params.PageSize : null;
        this.StartTime = 'StartTime' in params ? params.StartTime : null;
        this.EndTime = 'EndTime' in params ? params.EndTime : null;
        this.AlarmLevel = 'AlarmLevel' in params ? params.AlarmLevel : null;
        this.AlarmRecipientId = 'AlarmRecipientId' in params ? params.AlarmRecipientId : null;
        this.TimeZone = 'TimeZone' in params ? params.TimeZone : null;

    }
}

/**
 * UpdateCodeFile response structure.
 * @class
 */
class UpdateCodeFileResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Result
         * @type {CodeFile || null}
         */
        this.Data = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Data) {
            let obj = new CodeFile();
            obj.deserialize(params.Data)
            this.Data = obj;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * GetOpsWorkflow request structure.
 * @class
 */
class GetOpsWorkflowRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Project ID.

         * @type {string || null}
         */
        this.ProjectId = null;

        /**
         * Workflow Id, can be obtained through the ListOpsWorkflows api.
         * @type {string || null}
         */
        this.WorkflowId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.ProjectId = 'ProjectId' in params ? params.ProjectId : null;
        this.WorkflowId = 'WorkflowId' in params ? params.WorkflowId : null;

    }
}

/**
 * CreateOpsAlarmRule request structure.
 * @class
 */
class CreateOpsAlarmRuleRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Project ID.
         * @type {string || null}
         */
        this.ProjectId = null;

        /**
         * Specifies the Alarm rule name.
         * @type {string || null}
         */
        this.AlarmRuleName = null;

        /**
         * Monitoring Object Business ID List - Pass different business IDs depending on the value of MonitorType:

1 (Task): MonitorObjectIds should contain a list of task IDs.

2 (Workflow): MonitorObjectIds should contain a list of workflow IDs (workflow IDs can be obtained using the ListWorkflows API).

3 (Project): MonitorObjectIds should contain a list of project IDs.
         * @type {Array.<string> || null}
         */
        this.MonitorObjectIds = null;

        /**
         * Alarm Rule Monitoring Types:

failure: Failure alarm

overtime: Timeout alarm

success: Success alarm

backTrackingOrRerunSuccess: Alarm when backfill/rerun succeeds

backTrackingOrRerunFailure: Alarm when backfill/rerun fails

projectFailureInstanceUpwardFluctuationAlarm: Alarm when the upward fluctuation rate of failed instances for the day exceeds the threshold

projectSuccessInstanceDownwardFluctuationAlarm: Alarm when the downward fluctuation rate of successful instances for the day exceeds the threshold

reconciliationFailure: Alarm when an offline reconciliation task fails

reconciliationOvertime: Alarm when an offline reconciliation task runs overtime

reconciliationMismatch: Alarm when the number of mismatched records in reconciliation exceeds the threshold
         * @type {Array.<string> || null}
         */
        this.AlarmTypes = null;

        /**
         * Alarm recipient configuration.
         * @type {Array.<AlarmGroup> || null}
         */
        this.AlarmGroups = null;

        /**
         * Monitoring Object Type

Task-level Monitoring - Can be configured by Task / Workflow / Project:
1 = Task (default)
2 = Workflow
3 = Project

Project-level Monitoring - Monitors overall task fluctuations within a project:
7 = Project fluctuation monitoring alarm
         * @type {number || null}
         */
        this.MonitorObjectType = null;

        /**
         * Alarm Rule Configuration Information

Success Alarms - No configuration required;

Failure Alarms - Can be configured to trigger on the first failure or on all retry failures;

Timeout Alarms - Require configuration of the timeout type and timeout threshold;

Project Fluctuation Alarms - Require configuration of the fluctuation rate and the debounce cycle.
         * @type {AlarmRuleDetail || null}
         */
        this.AlarmRuleDetail = null;

        /**
         * Alarm level. 1. ordinary, 2. important, 3. critical (default: 1. ordinary).
         * @type {number || null}
         */
        this.AlarmLevel = null;

        /**
         * Describes the Alarm rule.
         * @type {string || null}
         */
        this.Description = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.ProjectId = 'ProjectId' in params ? params.ProjectId : null;
        this.AlarmRuleName = 'AlarmRuleName' in params ? params.AlarmRuleName : null;
        this.MonitorObjectIds = 'MonitorObjectIds' in params ? params.MonitorObjectIds : null;
        this.AlarmTypes = 'AlarmTypes' in params ? params.AlarmTypes : null;

        if (params.AlarmGroups) {
            this.AlarmGroups = new Array();
            for (let z in params.AlarmGroups) {
                let obj = new AlarmGroup();
                obj.deserialize(params.AlarmGroups[z]);
                this.AlarmGroups.push(obj);
            }
        }
        this.MonitorObjectType = 'MonitorObjectType' in params ? params.MonitorObjectType : null;

        if (params.AlarmRuleDetail) {
            let obj = new AlarmRuleDetail();
            obj.deserialize(params.AlarmRuleDetail)
            this.AlarmRuleDetail = obj;
        }
        this.AlarmLevel = 'AlarmLevel' in params ? params.AlarmLevel : null;
        this.Description = 'Description' in params ? params.Description : null;

    }
}

/**
 * ListSQLScriptRuns response structure.
 * @class
 */
class ListSQLScriptRunsResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Data Exploration runs.
         * @type {Array.<JobDto> || null}
         */
        this.Data = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Data) {
            this.Data = new Array();
            for (let z in params.Data) {
                let obj = new JobDto();
                obj.deserialize(params.Data[z]);
                this.Data.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Task object.
 * @class
 */
class Task extends  AbstractModel {
    constructor(){
        super();

        /**
         * Describes the basic attributes of the task.
         * @type {TaskBaseAttribute || null}
         */
        this.TaskBaseAttribute = null;

        /**
         * Task configurations.

         * @type {TaskConfiguration || null}
         */
        this.TaskConfiguration = null;

        /**
         * Specifies task scheduling configuration.

         * @type {TaskSchedulerConfiguration || null}
         */
        this.TaskSchedulerConfiguration = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.TaskBaseAttribute) {
            let obj = new TaskBaseAttribute();
            obj.deserialize(params.TaskBaseAttribute)
            this.TaskBaseAttribute = obj;
        }

        if (params.TaskConfiguration) {
            let obj = new TaskConfiguration();
            obj.deserialize(params.TaskConfiguration)
            this.TaskConfiguration = obj;
        }

        if (params.TaskSchedulerConfiguration) {
            let obj = new TaskSchedulerConfiguration();
            obj.deserialize(params.TaskSchedulerConfiguration)
            this.TaskSchedulerConfiguration = obj;
        }

    }
}

/**
 * Alarm fatigue Alarm configuration.
 * @class
 */
class NotificationFatigue extends  AbstractModel {
    constructor(){
        super();

        /**
         * Number of alarms.
         * @type {number || null}
         */
        this.NotifyCount = null;

        /**
         * Alarm interval, in minutes.
         * @type {number || null}
         */
        this.NotifyInterval = null;

        /**
         * Do not disturb period, such as example value.
[{DaysOfWeek: [1, 2], StartTime: "00:00:00", EndTime: "09:00:00"}]	
Specifies notification muting from 00:00 to 09:00 every monday and tuesday.
         * @type {Array.<AlarmQuietInterval> || null}
         */
        this.QuietIntervals = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.NotifyCount = 'NotifyCount' in params ? params.NotifyCount : null;
        this.NotifyInterval = 'NotifyInterval' in params ? params.NotifyInterval : null;

        if (params.QuietIntervals) {
            this.QuietIntervals = new Array();
            for (let z in params.QuietIntervals) {
                let obj = new AlarmQuietInterval();
                obj.deserialize(params.QuietIntervals[z]);
                this.QuietIntervals.push(obj);
            }
        }

    }
}

/**
 * Task data registration item.
 * @class
 */
class TaskDataRegistry extends  AbstractModel {
    constructor(){
        super();

        /**
         * Data source ID.
         * @type {string || null}
         */
        this.DatasourceId = null;

        /**
         * Database name.

         * @type {string || null}
         */
        this.DatabaseName = null;

        /**
         * Table name

         * @type {string || null}
         */
        this.TableName = null;

        /**
         * Partition name

         * @type {string || null}
         */
        this.PartitionName = null;

        /**
         * Input output table data type.
Input stream:
 UPSTREAM,
Output stream:
  DOWNSTREAM;.
         * @type {string || null}
         */
        this.DataFlowType = null;

        /**
         * Physical unique ID..
         * @type {string || null}
         */
        this.TablePhysicalId = null;

        /**
         * Database unique id..
         * @type {string || null}
         */
        this.DbGuid = null;

        /**
         * Unique id of the table.
         * @type {string || null}
         */
        this.TableGuid = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.DatasourceId = 'DatasourceId' in params ? params.DatasourceId : null;
        this.DatabaseName = 'DatabaseName' in params ? params.DatabaseName : null;
        this.TableName = 'TableName' in params ? params.TableName : null;
        this.PartitionName = 'PartitionName' in params ? params.PartitionName : null;
        this.DataFlowType = 'DataFlowType' in params ? params.DataFlowType : null;
        this.TablePhysicalId = 'TablePhysicalId' in params ? params.TablePhysicalId : null;
        this.DbGuid = 'DbGuid' in params ? params.DbGuid : null;
        this.TableGuid = 'TableGuid' in params ? params.TableGuid : null;

    }
}

/**
 * GetTaskInstanceLog request structure.
 * @class
 */
class GetTaskInstanceLogRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * **Project ID**. specifies the project ID.
         * @type {string || null}
         */
        this.ProjectId = null;

        /**
         * **Instance unique id**.
         * @type {string || null}
         */
        this.InstanceKey = null;

        /**
         * **Instance Lifecycle Number** - Identifies a specific execution of an instance.
For example: the first run of a cyclic instance has a lifecycle number of 0. If the user reruns that instance later, the second execution will have a lifecycle number of 1;
By default, the latest execution is used.
         * @type {number || null}
         */
        this.LifeRoundNum = null;

        /**
         * **Log level** default All - Info - Debug - Warn - Error - All.
         * @type {string || null}
         */
        this.LogLevel = null;

        /**
         * **Used when performing paginated log queries; has no specific business meaning.**

For the first query, the value is null.

For subsequent queries, use the value of the NextCursor field returned from the previous query.
         * @type {string || null}
         */
        this.NextCursor = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.ProjectId = 'ProjectId' in params ? params.ProjectId : null;
        this.InstanceKey = 'InstanceKey' in params ? params.InstanceKey : null;
        this.LifeRoundNum = 'LifeRoundNum' in params ? params.LifeRoundNum : null;
        this.LogLevel = 'LogLevel' in params ? params.LogLevel : null;
        this.NextCursor = 'NextCursor' in params ? params.NextCursor : null;

    }
}

/**
 * SetSuccessTaskInstancesAsync response structure.
 * @class
 */
class SetSuccessTaskInstancesAsyncResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Async id of the batch successful operation. can be used in the GetAsyncJob API to query execution detail.
         * @type {OpsAsyncResponse || null}
         */
        this.Data = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Data) {
            let obj = new OpsAsyncResponse();
            obj.deserialize(params.Data)
            this.Data = obj;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Task code.
 * @class
 */
class TaskCodeResult extends  AbstractModel {
    constructor(){
        super();

        /**
         * Code content.
         * @type {string || null}
         */
        this.CodeInfo = null;

        /**
         * Code file size. unit: KB.
         * @type {string || null}
         */
        this.CodeFileSize = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.CodeInfo = 'CodeInfo' in params ? params.CodeInfo : null;
        this.CodeFileSize = 'CodeFileSize' in params ? params.CodeFileSize : null;

    }
}

/**
 * UpdateSQLScript request structure.
 * @class
 */
class UpdateSQLScriptRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Script Id.
         * @type {string || null}
         */
        this.ScriptId = null;

        /**
         * Project ID.

         * @type {string || null}
         */
        this.ProjectId = null;

        /**
         * Specifies the script configuration for data exploration.
         * @type {SQLScriptConfig || null}
         */
        this.ScriptConfig = null;

        /**
         * Specifies the script content, needs to be Base64 encoded.
         * @type {string || null}
         */
        this.ScriptContent = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.ScriptId = 'ScriptId' in params ? params.ScriptId : null;
        this.ProjectId = 'ProjectId' in params ? params.ProjectId : null;

        if (params.ScriptConfig) {
            let obj = new SQLScriptConfig();
            obj.deserialize(params.ScriptConfig)
            this.ScriptConfig = obj;
        }
        this.ScriptContent = 'ScriptContent' in params ? params.ScriptContent : null;

    }
}

/**
 * SetSuccessTaskInstancesAsync request structure.
 * @class
 */
class SetSuccessTaskInstancesAsyncRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Project ID.

         * @type {string || null}
         */
        this.ProjectId = null;

        /**
         * Instance id list, can be obtained from ListInstances API.
         * @type {Array.<string> || null}
         */
        this.InstanceKeyList = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.ProjectId = 'ProjectId' in params ? params.ProjectId : null;
        this.InstanceKeyList = 'InstanceKeyList' in params ? params.InstanceKeyList : null;

    }
}

/**
 * Task code.
 * @class
 */
class TaskCode extends  AbstractModel {
    constructor(){
        super();

        /**
         * Specifies the code content.
         * @type {string || null}
         */
        this.CodeContent = null;

        /**
         * Specifies the size of the code file in bytes.
         * @type {number || null}
         */
        this.CodeFileSize = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.CodeContent = 'CodeContent' in params ? params.CodeContent : null;
        this.CodeFileSize = 'CodeFileSize' in params ? params.CodeFileSize : null;

    }
}

/**
 * StopOpsTasksAsync request structure.
 * @class
 */
class StopOpsTasksAsyncRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Project ID
         * @type {string || null}
         */
        this.ProjectId = null;

        /**
         * Task Id list. specifies the list of task ids.
         * @type {Array.<string> || null}
         */
        this.TaskIds = null;

        /**
         * Specifies whether to terminate the generated instance. default value: false.
         * @type {boolean || null}
         */
        this.KillInstance = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.ProjectId = 'ProjectId' in params ? params.ProjectId : null;
        this.TaskIds = 'TaskIds' in params ? params.TaskIds : null;
        this.KillInstance = 'KillInstance' in params ? params.KillInstance : null;

    }
}

/**
 * ListAlarmMessages response structure.
 * @class
 */
class ListAlarmMessagesResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Alarm information list.
         * @type {ListAlarmMessages || null}
         */
        this.Data = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Data) {
            let obj = new ListAlarmMessages();
            obj.deserialize(params.Data)
            this.Data = obj;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Parameters
 * @class
 */
class ParamInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Parameter name.
         * @type {string || null}
         */
        this.ParamKey = null;

        /**
         * Parameter value.
         * @type {string || null}
         */
        this.ParamValue = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.ParamKey = 'ParamKey' in params ? params.ParamKey : null;
        this.ParamValue = 'ParamValue' in params ? params.ParamValue : null;

    }
}

/**
 * CodeStudio folder object operation result.
 * @class
 */
class CodeStudioFolderResult extends  AbstractModel {
    constructor(){
        super();

        /**
         * Folder ID.

Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.FolderId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.FolderId = 'FolderId' in params ? params.FolderId : null;

    }
}

/**
 * GetOpsTask request structure.
 * @class
 */
class GetOpsTaskRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Task ID		
         * @type {string || null}
         */
        this.TaskId = null;

        /**
         * Project ID.

         * @type {string || null}
         */
        this.ProjectId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TaskId = 'TaskId' in params ? params.TaskId : null;
        this.ProjectId = 'ProjectId' in params ? params.ProjectId : null;

    }
}

/**
 * Describes the response result of deleting an Alarm rule.
 * @class
 */
class DeleteAlarmRuleResult extends  AbstractModel {
    constructor(){
        super();

        /**
         * Whether deletion succeeded.
         * @type {boolean || null}
         */
        this.Status = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Status = 'Status' in params ? params.Status : null;

    }
}

/**
 * Deletion result of a data development task.
 * @class
 */
class DeleteTaskResult extends  AbstractModel {
    constructor(){
        super();

        /**
         * Deletion status. true indicates success. false indicates failure.
         * @type {boolean || null}
         */
        this.Status = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Status = 'Status' in params ? params.Status : null;

    }
}

/**
 * DeleteResourceFile request structure.
 * @class
 */
class DeleteResourceFileRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Project ID.
         * @type {string || null}
         */
        this.ProjectId = null;

        /**
         * Resource ID. obtain through the API ListResourceFiles.
         * @type {string || null}
         */
        this.ResourceId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.ProjectId = 'ProjectId' in params ? params.ProjectId : null;
        this.ResourceId = 'ResourceId' in params ? params.ResourceId : null;

    }
}

/**
 * ListWorkflowFolders response structure.
 * @class
 */
class ListWorkflowFoldersResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Paginated folder query result.
         * @type {WorkflowFolderPage || null}
         */
        this.Data = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Data) {
            let obj = new WorkflowFolderPage();
            obj.deserialize(params.Data)
            this.Data = obj;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * CreateSQLScript response structure.
 * @class
 */
class CreateSQLScriptResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Result
         * @type {SQLScript || null}
         */
        this.Data = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Data) {
            let obj = new SQLScript();
            obj.deserialize(params.Data)
            this.Data = obj;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Alarm do-not-disturb time interval.
 * @class
 */
class AlarmQuietInterval extends  AbstractModel {
    constructor(){
        super();

        /**
         * ISO standard. 1 means monday, 7 means sunday.
         * @type {Array.<number> || null}
         */
        this.DaysOfWeek = null;

        /**
         * Start time. precision: hour/minute/second. format: HH:mm:ss.
         * @type {string || null}
         */
        this.StartTime = null;

        /**
         * End time. precision: hour/minute/second. format: HH:mm:ss.
         * @type {string || null}
         */
        this.EndTime = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.DaysOfWeek = 'DaysOfWeek' in params ? params.DaysOfWeek : null;
        this.StartTime = 'StartTime' in params ? params.StartTime : null;
        this.EndTime = 'EndTime' in params ? params.EndTime : null;

    }
}

/**
 * Explore data script business processing entity.
 * @class
 */
class CodeFile extends  AbstractModel {
    constructor(){
        super();

        /**
         * Script ID


         * @type {string || null}
         */
        this.CodeFileId = null;

        /**
         * Script name.

         * @type {string || null}
         */
        this.CodeFileName = null;

        /**
         * Specifies the script owner uin.

         * @type {string || null}
         */
        this.OwnerUin = null;

        /**
         * Specifies the script configuration.

         * @type {CodeFileConfig || null}
         */
        this.CodeFileConfig = null;

        /**
         * Specifies the script content.

         * @type {string || null}
         */
        this.CodeFileContent = null;

        /**
         * Latest operator.

         * @type {string || null}
         */
        this.UpdateUserUin = null;

        /**
         * Project ID.


         * @type {string || null}
         */
        this.ProjectId = null;

        /**
         * Update time. format: yyyy-MM-dd hh:MM:ss.
Note: This field may return null, indicating that no valid 
         * @type {string || null}
         */
        this.UpdateTime = null;

        /**
         * Creation time. format: yyyy-MM-dd hh:MM:ss.

         * @type {string || null}
         */
        this.CreateTime = null;

        /**
         * Access permission: SHARED, PRIVATE.

         * @type {string || null}
         */
        this.AccessScope = null;

        /**
         * Full path of the node, /aaa/bbb/ccc.ipynb, consists of the name of each node.

         * @type {string || null}
         */
        this.Path = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.CodeFileId = 'CodeFileId' in params ? params.CodeFileId : null;
        this.CodeFileName = 'CodeFileName' in params ? params.CodeFileName : null;
        this.OwnerUin = 'OwnerUin' in params ? params.OwnerUin : null;

        if (params.CodeFileConfig) {
            let obj = new CodeFileConfig();
            obj.deserialize(params.CodeFileConfig)
            this.CodeFileConfig = obj;
        }
        this.CodeFileContent = 'CodeFileContent' in params ? params.CodeFileContent : null;
        this.UpdateUserUin = 'UpdateUserUin' in params ? params.UpdateUserUin : null;
        this.ProjectId = 'ProjectId' in params ? params.ProjectId : null;
        this.UpdateTime = 'UpdateTime' in params ? params.UpdateTime : null;
        this.CreateTime = 'CreateTime' in params ? params.CreateTime : null;
        this.AccessScope = 'AccessScope' in params ? params.AccessScope : null;
        this.Path = 'Path' in params ? params.Path : null;

    }
}

/**
 * ListTasks request structure.
 * @class
 */
class ListTasksRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Project ID.
         * @type {string || null}
         */
        this.ProjectId = null;

        /**
         * Specifies the data page number of the request. default value is 1. valid values: equal to or greater than 1.
         * @type {number || null}
         */
        this.PageNumber = null;

        /**
         * Specifies the number of data records displayed per page. default: 10. value range: 10 to 200.
         * @type {number || null}
         */
        this.PageSize = null;

        /**
         * Task name.
         * @type {string || null}
         */
        this.TaskName = null;

        /**
         * Workflow ID
         * @type {string || null}
         */
        this.WorkflowId = null;

        /**
         * Owner ID.
         * @type {string || null}
         */
        this.OwnerUin = null;

        /**
         * Task type
         * @type {number || null}
         */
        this.TaskTypeId = null;

        /**
         * Task Status:
* N: New
* Y: Scheduling
* F: Offline
* O: Paused
* T: Offlining
* INVALID: Invalid
         * @type {string || null}
         */
        this.Status = null;

        /**
         * Submission status.
         * @type {boolean || null}
         */
        this.Submit = null;

        /**
         * Bundle id.
         * @type {string || null}
         */
        this.BundleId = null;

        /**
         * Creator ID.
         * @type {string || null}
         */
        this.CreateUserUin = null;

        /**
         * Modification time range (yyyy-MM-dd HH:mm:ss). Two time values must be provided in the array.
         * @type {Array.<string> || null}
         */
        this.ModifyTime = null;

        /**
         * Creation time range (yyyy-MM-dd HH:MM:ss). Two time values must be provided in the array.
         * @type {Array.<string> || null}
         */
        this.CreateTime = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.ProjectId = 'ProjectId' in params ? params.ProjectId : null;
        this.PageNumber = 'PageNumber' in params ? params.PageNumber : null;
        this.PageSize = 'PageSize' in params ? params.PageSize : null;
        this.TaskName = 'TaskName' in params ? params.TaskName : null;
        this.WorkflowId = 'WorkflowId' in params ? params.WorkflowId : null;
        this.OwnerUin = 'OwnerUin' in params ? params.OwnerUin : null;
        this.TaskTypeId = 'TaskTypeId' in params ? params.TaskTypeId : null;
        this.Status = 'Status' in params ? params.Status : null;
        this.Submit = 'Submit' in params ? params.Submit : null;
        this.BundleId = 'BundleId' in params ? params.BundleId : null;
        this.CreateUserUin = 'CreateUserUin' in params ? params.CreateUserUin : null;
        this.ModifyTime = 'ModifyTime' in params ? params.ModifyTime : null;
        this.CreateTime = 'CreateTime' in params ? params.CreateTime : null;

    }
}

/**
 * Asynchronous operation return structure.
 * @class
 */
class OpsAsyncResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Asynchronous execution record Id.
         * @type {string || null}
         */
        this.AsyncId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.AsyncId = 'AsyncId' in params ? params.AsyncId : null;

    }
}

/**
 * Create workflow result.
 * @class
 */
class CreateWorkflowResult extends  AbstractModel {
    constructor(){
        super();

        /**
         * Workflow id after successful creation.
         * @type {string || null}
         */
        this.WorkflowId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.WorkflowId = 'WorkflowId' in params ? params.WorkflowId : null;

    }
}

/**
 * ListResourceFolders request structure.
 * @class
 */
class ListResourceFoldersRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Project ID.
         * @type {string || null}
         */
        this.ProjectId = null;

        /**
         * Resource folder absolute path. value example.
/wedata/test
         * @type {string || null}
         */
        this.ParentFolderPath = null;

        /**
         * Data page number, equal to or greater than 1. default 1.
         * @type {number || null}
         */
        this.PageNumber = null;

        /**
         * Specifies the number of data records displayed per page. valid values: 10 to 200. default: 10.
         * @type {number || null}
         */
        this.PageSize = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.ProjectId = 'ProjectId' in params ? params.ProjectId : null;
        this.ParentFolderPath = 'ParentFolderPath' in params ? params.ParentFolderPath : null;
        this.PageNumber = 'PageNumber' in params ? params.PageNumber : null;
        this.PageSize = 'PageSize' in params ? params.PageSize : null;

    }
}

/**
 * Resource file details.
 * @class
 */
class ResourceFile extends  AbstractModel {
    constructor(){
        super();

        /**
         * Project ID.
         * @type {string || null}
         */
        this.ProjectId = null;

        /**
         * Resource file ID.
         * @type {string || null}
         */
        this.ResourceId = null;

        /**
         * Resource file name.
         * @type {string || null}
         */
        this.ResourceName = null;

        /**
         * Source file path.
         * @type {string || null}
         */
        this.LocalPath = null;

        /**
         * Specifies the COS storage path of the resource object.
         * @type {string || null}
         */
        this.RemotePath = null;

        /**
         * Specifies the resource file type.

         * @type {string || null}
         */
        this.FileExtensionType = null;

        /**
         * Resource size
         * @type {string || null}
         */
        this.Size = null;

        /**
         * Creator user ID 
         * @type {string || null}
         */
        this.CreatorUserUin = null;

        /**
         * Creator name
         * @type {string || null}
         */
        this.CreatorUserName = null;

        /**
         * Last updated username.

         * @type {string || null}
         */
        this.UpdateUserName = null;

        /**
         * Last updated user ID.

         * @type {string || null}
         */
        this.UpdateUserUin = null;

        /**
         * COS bucket.
         * @type {string || null}
         */
        this.BucketName = null;

        /**
         * COS region
         * @type {string || null}
         */
        this.CosRegion = null;

        /**
         * Specifies the resource source mode.
         * @type {string || null}
         */
        this.ResourceSourceMode = null;

        /**
         * Local project ID.

         * @type {string || null}
         */
        this.BundleId = null;

        /**
         * Local project information.

         * @type {string || null}
         */
        this.BundleInfo = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.ProjectId = 'ProjectId' in params ? params.ProjectId : null;
        this.ResourceId = 'ResourceId' in params ? params.ResourceId : null;
        this.ResourceName = 'ResourceName' in params ? params.ResourceName : null;
        this.LocalPath = 'LocalPath' in params ? params.LocalPath : null;
        this.RemotePath = 'RemotePath' in params ? params.RemotePath : null;
        this.FileExtensionType = 'FileExtensionType' in params ? params.FileExtensionType : null;
        this.Size = 'Size' in params ? params.Size : null;
        this.CreatorUserUin = 'CreatorUserUin' in params ? params.CreatorUserUin : null;
        this.CreatorUserName = 'CreatorUserName' in params ? params.CreatorUserName : null;
        this.UpdateUserName = 'UpdateUserName' in params ? params.UpdateUserName : null;
        this.UpdateUserUin = 'UpdateUserUin' in params ? params.UpdateUserUin : null;
        this.BucketName = 'BucketName' in params ? params.BucketName : null;
        this.CosRegion = 'CosRegion' in params ? params.CosRegion : null;
        this.ResourceSourceMode = 'ResourceSourceMode' in params ? params.ResourceSourceMode : null;
        this.BundleId = 'BundleId' in params ? params.BundleId : null;
        this.BundleInfo = 'BundleInfo' in params ? params.BundleInfo : null;

    }
}

/**
 * Describes the pagination list of query task versions.
 * @class
 */
class ListTaskVersions extends  AbstractModel {
    constructor(){
        super();

        /**
         * Record list	
	

         * @type {Array.<TaskVersion> || null}
         */
        this.Items = null;

        /**
         * Total number of records that meet the query condition.

         * @type {number || null}
         */
        this.TotalCount = null;

        /**
         * Total number of pages that meet the query condition.

         * @type {number || null}
         */
        this.TotalPageNumber = null;

        /**
         * Number of records on current page.

         * @type {number || null}
         */
        this.PageCount = null;

        /**
         * Specifies the number of entries in the current request data page.

         * @type {number || null}
         */
        this.PageSize = null;

        /**
         * Specifies the data page number of the current request.

         * @type {number || null}
         */
        this.PageNumber = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Items) {
            this.Items = new Array();
            for (let z in params.Items) {
                let obj = new TaskVersion();
                obj.deserialize(params.Items[z]);
                this.Items.push(obj);
            }
        }
        this.TotalCount = 'TotalCount' in params ? params.TotalCount : null;
        this.TotalPageNumber = 'TotalPageNumber' in params ? params.TotalPageNumber : null;
        this.PageCount = 'PageCount' in params ? params.PageCount : null;
        this.PageSize = 'PageSize' in params ? params.PageSize : null;
        this.PageNumber = 'PageNumber' in params ? params.PageNumber : null;

    }
}

/**
 * Workflow list pagination details.
 * @class
 */
class OpsWorkflow extends  AbstractModel {
    constructor(){
        super();

        /**
         * Number of Tasks
         * @type {number || null}
         */
        this.TaskCount = null;

        /**
         * folder name.

         * @type {string || null}
         */
        this.FolderName = null;

        /**
         * Workflow folder id.
         * @type {string || null}
         */
        this.FolderId = null;

        /**
         * Workflow id.
         * @type {string || null}
         */
        this.WorkflowId = null;

        /**
         * Workflow name.

Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.WorkflowName = null;

        /**
         * Specifies the workflow type.
-cycle period.
-manual.
         * @type {string || null}
         */
        this.WorkflowType = null;

        /**
         * Workflow description.

         * @type {string || null}
         */
        this.WorkflowDesc = null;

        /**
         * Responsible user id, multiple ';' separators.

         * @type {string || null}
         */
        this.OwnerUin = null;

        /**
         * Project ID.
         * @type {string || null}
         */
        this.ProjectId = null;

        /**
         * Project name.


         * @type {string || null}
         */
        this.ProjectName = null;

        /**
         * Workflow Status

* ALL_RUNNING: All running (all workflows are in scheduling state)

* ALL_FREEZED: All paused

* ALL_STOPPTED: All stopped

* PART_RUNNING: Partially running (some workflows are running, others not)

* ALL_NO_RUNNING: All not scheduled

* ALL_INVALID: All invalid
         * @type {string || null}
         */
        this.Status = null;

        /**
         * Workflow creation time.

         * @type {string || null}
         */
        this.CreateTime = null;

        /**
         * Latest update time. specifies development and production updates.
         * @type {string || null}
         */
        this.UpdateTime = null;

        /**
         * Last updated by, including development and production updates.
         * @type {string || null}
         */
        this.UpdateUserUin = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TaskCount = 'TaskCount' in params ? params.TaskCount : null;
        this.FolderName = 'FolderName' in params ? params.FolderName : null;
        this.FolderId = 'FolderId' in params ? params.FolderId : null;
        this.WorkflowId = 'WorkflowId' in params ? params.WorkflowId : null;
        this.WorkflowName = 'WorkflowName' in params ? params.WorkflowName : null;
        this.WorkflowType = 'WorkflowType' in params ? params.WorkflowType : null;
        this.WorkflowDesc = 'WorkflowDesc' in params ? params.WorkflowDesc : null;
        this.OwnerUin = 'OwnerUin' in params ? params.OwnerUin : null;
        this.ProjectId = 'ProjectId' in params ? params.ProjectId : null;
        this.ProjectName = 'ProjectName' in params ? params.ProjectName : null;
        this.Status = 'Status' in params ? params.Status : null;
        this.CreateTime = 'CreateTime' in params ? params.CreateTime : null;
        this.UpdateTime = 'UpdateTime' in params ? params.UpdateTime : null;
        this.UpdateUserUin = 'UpdateUserUin' in params ? params.UpdateUserUin : null;

    }
}

/**
 * GetWorkflow response structure.
 * @class
 */
class GetWorkflowResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Describes workflow details.

         * @type {WorkflowDetail || null}
         */
        this.Data = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Data) {
            let obj = new WorkflowDetail();
            obj.deserialize(params.Data)
            this.Data = obj;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * ListUpstreamTasks request structure.
 * @class
 */
class ListUpstreamTasksRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Project ID.

         * @type {string || null}
         */
        this.ProjectId = null;

        /**
         * Task ID
         * @type {string || null}
         */
        this.TaskId = null;

        /**
         * Specifies the data page number of the request. Default value is 1. Valid values: equal to or greater than 1.
         * @type {number || null}
         */
        this.PageNumber = null;

        /**
         * Specifies the data page number of the request. Default value is 1. Valid values: equal to or greater than 1.
         * @type {number || null}
         */
        this.PageSize = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.ProjectId = 'ProjectId' in params ? params.ProjectId : null;
        this.TaskId = 'TaskId' in params ? params.TaskId : null;
        this.PageNumber = 'PageNumber' in params ? params.PageNumber : null;
        this.PageSize = 'PageSize' in params ? params.PageSize : null;

    }
}

/**
 * GetTaskCode request structure.
 * @class
 */
class GetTaskCodeRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * The project id.
         * @type {string || null}
         */
        this.ProjectId = null;

        /**
         * Task ID
         * @type {string || null}
         */
        this.TaskId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.ProjectId = 'ProjectId' in params ? params.ProjectId : null;
        this.TaskId = 'TaskId' in params ? params.TaskId : null;

    }
}

/**
 * GetTask response structure.
 * @class
 */
class GetTaskResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Task details.
         * @type {Task || null}
         */
        this.Data = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Data) {
            let obj = new Task();
            obj.deserialize(params.Data)
            this.Data = obj;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DeleteCodeFolder request structure.
 * @class
 */
class DeleteCodeFolderRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Project ID.
         * @type {string || null}
         */
        this.ProjectId = null;

        /**
         * Folder ID. the parameter value comes from the CreateCodeFolder API response.
         * @type {string || null}
         */
        this.FolderId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.ProjectId = 'ProjectId' in params ? params.ProjectId : null;
        this.FolderId = 'FolderId' in params ? params.FolderId : null;

    }
}

/**
 * KillTaskInstancesAsync request structure.
 * @class
 */
class KillTaskInstancesAsyncRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Project ID.

         * @type {string || null}
         */
        this.ProjectId = null;

        /**
         * Instance id list, can be obtained from ListInstances API.
         * @type {Array.<string> || null}
         */
        this.InstanceKeyList = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.ProjectId = 'ProjectId' in params ? params.ProjectId : null;
        this.InstanceKeyList = 'InstanceKeyList' in params ? params.InstanceKeyList : null;

    }
}

/**
 * CodeStudio file object operation result.
 * @class
 */
class CodeStudioFileActionResult extends  AbstractModel {
    constructor(){
        super();

        /**
         * Indicates whether the operation is successful. valid values: true (successful), false (unsuccessful).

         * @type {boolean || null}
         */
        this.Status = null;

        /**
         * Folder ID.

         * @type {string || null}
         */
        this.CodeFileId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Status = 'Status' in params ? params.Status : null;
        this.CodeFileId = 'CodeFileId' in params ? params.CodeFileId : null;

    }
}

/**
 * CreateSQLScript request structure.
 * @class
 */
class CreateSQLScriptRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Script name.
         * @type {string || null}
         */
        this.ScriptName = null;

        /**
         * Project ID.

         * @type {string || null}
         */
        this.ProjectId = null;

        /**
         * Parent folder path, /aaa/bbb/ccc. root directory is empty string or /.
         * @type {string || null}
         */
        this.ParentFolderPath = null;

        /**
         * Specifies the script configuration for data exploration.
         * @type {SQLScriptConfig || null}
         */
        this.ScriptConfig = null;

        /**
         * Specifies the script content, if any, needs to be base64 encoded.
         * @type {string || null}
         */
        this.ScriptContent = null;

        /**
         * Access permission: SHARED, PRIVATE.
         * @type {string || null}
         */
        this.AccessScope = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.ScriptName = 'ScriptName' in params ? params.ScriptName : null;
        this.ProjectId = 'ProjectId' in params ? params.ProjectId : null;
        this.ParentFolderPath = 'ParentFolderPath' in params ? params.ParentFolderPath : null;

        if (params.ScriptConfig) {
            let obj = new SQLScriptConfig();
            obj.deserialize(params.ScriptConfig)
            this.ScriptConfig = obj;
        }
        this.ScriptContent = 'ScriptContent' in params ? params.ScriptContent : null;
        this.AccessScope = 'AccessScope' in params ? params.AccessScope : null;

    }
}

/**
 * Folder information.
 * @class
 */
class WorkflowFolder extends  AbstractModel {
    constructor(){
        super();

        /**
         * Project ID.
         * @type {string || null}
         */
        this.ProjectId = null;

        /**
         * Folder ID.
         * @type {string || null}
         */
        this.FolderId = null;

        /**
         * Specifies the absolute path of the folder.
         * @type {string || null}
         */
        this.FolderPath = null;

        /**
         * Creator ID.
         * @type {string || null}
         */
        this.CreateUserUin = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.ProjectId = 'ProjectId' in params ? params.ProjectId : null;
        this.FolderId = 'FolderId' in params ? params.FolderId : null;
        this.FolderPath = 'FolderPath' in params ? params.FolderPath : null;
        this.CreateUserUin = 'CreateUserUin' in params ? params.CreateUserUin : null;

    }
}

/**
 * ListDataBackfillInstances request structure.
 * @class
 */
class ListDataBackfillInstancesRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Project ID
         * @type {string || null}
         */
        this.ProjectId = null;

        /**
         * Backfill plan Id.
         * @type {string || null}
         */
        this.DataBackfillPlanId = null;

        /**
         * Task ID
         * @type {string || null}
         */
        this.TaskId = null;

        /**
         * Page number.
         * @type {number || null}
         */
        this.PageNumber = null;

        /**
         * Pagination size.
         * @type {number || null}
         */
        this.PageSize = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.ProjectId = 'ProjectId' in params ? params.ProjectId : null;
        this.DataBackfillPlanId = 'DataBackfillPlanId' in params ? params.DataBackfillPlanId : null;
        this.TaskId = 'TaskId' in params ? params.TaskId : null;
        this.PageNumber = 'PageNumber' in params ? params.PageNumber : null;
        this.PageSize = 'PageSize' in params ? params.PageSize : null;

    }
}

/**
 * UpdateResourceFolder request structure.
 * @class
 */
class UpdateResourceFolderRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Project ID.
         * @type {string || null}
         */
        this.ProjectId = null;

        /**
         * Folder ID. obtain through the  ListResourceFolders API.
         * @type {string || null}
         */
        this.FolderId = null;

        /**
         * Folder name.
         * @type {string || null}
         */
        this.FolderName = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.ProjectId = 'ProjectId' in params ? params.ProjectId : null;
        this.FolderId = 'FolderId' in params ? params.FolderId : null;
        this.FolderName = 'FolderName' in params ? params.FolderName : null;

    }
}

/**
 * CodeStudio folder object operation result.
 * @class
 */
class CodeStudioFolderActionResult extends  AbstractModel {
    constructor(){
        super();

        /**
         * Indicates whether the operation is successful. valid values: true (successful), false (unsuccessful).

         * @type {boolean || null}
         */
        this.Status = null;

        /**
         * Folder ID.


         * @type {string || null}
         */
        this.FolderId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Status = 'Status' in params ? params.Status : null;
        this.FolderId = 'FolderId' in params ? params.FolderId : null;

    }
}

/**
 * ListOpsWorkflows response structure.
 * @class
 */
class ListOpsWorkflowsResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Workflow list
         * @type {OpsWorkflows || null}
         */
        this.Data = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Data) {
            let obj = new OpsWorkflows();
            obj.deserialize(params.Data)
            this.Data = obj;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Event listener.
 * @class
 */
class EventListener extends  AbstractModel {
    constructor(){
        super();

        /**
         * Event name

         * @type {string || null}
         */
        this.EventName = null;

        /**
         * Event cycle. valid values: SECOND, MIN, HOUR, DAY.

         * @type {string || null}
         */
        this.EventSubType = null;

        /**
         * Event BROADCAST type: SINGLE, BROADCAST.

         * @type {string || null}
         */
        this.EventBroadcastType = null;

        /**
         * Extension Information


         * @type {Array.<ParamInfo> || null}
         */
        this.PropertiesList = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.EventName = 'EventName' in params ? params.EventName : null;
        this.EventSubType = 'EventSubType' in params ? params.EventSubType : null;
        this.EventBroadcastType = 'EventBroadcastType' in params ? params.EventBroadcastType : null;

        if (params.PropertiesList) {
            this.PropertiesList = new Array();
            for (let z in params.PropertiesList) {
                let obj = new ParamInfo();
                obj.deserialize(params.PropertiesList[z]);
                this.PropertiesList.push(obj);
            }
        }

    }
}

/**
 * Replenishment plan all instances.
 * @class
 */
class BackfillInstanceCollection extends  AbstractModel {
    constructor(){
        super();

        /**
         * Page number
         * @type {number || null}
         */
        this.PageNumber = null;

        /**
         * Pagination size.
         * @type {number || null}
         */
        this.PageSize = null;

        /**
         * Total pages
         * @type {number || null}
         */
        this.TotalPageNumber = null;

        /**
         * Total number of records
         * @type {number || null}
         */
        this.TotalCount = null;

        /**
         * Specifies the backfill instance list.
         * @type {Array.<BackfillInstance> || null}
         */
        this.Items = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.PageNumber = 'PageNumber' in params ? params.PageNumber : null;
        this.PageSize = 'PageSize' in params ? params.PageSize : null;
        this.TotalPageNumber = 'TotalPageNumber' in params ? params.TotalPageNumber : null;
        this.TotalCount = 'TotalCount' in params ? params.TotalCount : null;

        if (params.Items) {
            this.Items = new Array();
            for (let z in params.Items) {
                let obj = new BackfillInstance();
                obj.deserialize(params.Items[z]);
                this.Items.push(obj);
            }
        }

    }
}

/**
 * UpdateSQLFolder response structure.
 * @class
 */
class UpdateSQLFolderResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Indicates whether the operation is successful. valid values: true (successful), false (unsuccessful).
         * @type {SQLContentActionResult || null}
         */
        this.Data = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Data) {
            let obj = new SQLContentActionResult();
            obj.deserialize(params.Data)
            this.Data = obj;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Describes the details of each stage in instance execution.
 * @class
 */
class InstanceExecutionPhase extends  AbstractModel {
    constructor(){
        super();

        /**
         * Start time of the state.
         * @type {string || null}
         */
        this.StartTime = null;

        /**
         * **Instance lifecycle phase status**.

-WAIT_UPSTREAM indicates the wait event/upstream status.
-WAIT_RUN indicates the waiting for running status.
-RUNNING indicates the running state.
-COMPLETE indicates the final state of completion.
- FAILED indicates the final state - retry on failure.
-EXPIRED indicates the final state - failure.
-SKIP_RUNNING indicates the branch skipped by the upstream branch node in the final state.
-HISTORY indicates compatibility with historical instances before 2024-03-30. no need to pay attention to this enum afterward.
         * @type {string || null}
         */
        this.DetailState = null;

        /**
         * End time of the state.
         * @type {string || null}
         */
        this.EndTime = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.StartTime = 'StartTime' in params ? params.StartTime : null;
        this.DetailState = 'DetailState' in params ? params.DetailState : null;
        this.EndTime = 'EndTime' in params ? params.EndTime : null;

    }
}

/**
 * GetAlarmMessage request structure.
 * @class
 */
class GetAlarmMessageRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Project ID
         * @type {string || null}
         */
        this.ProjectId = null;

        /**
         * Alarm message Id.
         * @type {string || null}
         */
        this.AlarmMessageId = null;

        /**
         * Specifies the time zone of the return date. default UTC+8.
         * @type {string || null}
         */
        this.TimeZone = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.ProjectId = 'ProjectId' in params ? params.ProjectId : null;
        this.AlarmMessageId = 'AlarmMessageId' in params ? params.AlarmMessageId : null;
        this.TimeZone = 'TimeZone' in params ? params.TimeZone : null;

    }
}

/**
 * CreateSQLFolder response structure.
 * @class
 */
class CreateSQLFolderResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Indicates whether the operation is successful. valid values: true (successful), false (unsuccessful).

         * @type {SqlCreateResult || null}
         */
        this.Data = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Data) {
            let obj = new SqlCreateResult();
            obj.deserialize(params.Data)
            this.Data = obj;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * ListCodeFolderContents request structure.
 * @class
 */
class ListCodeFolderContentsRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Project ID.
         * @type {string || null}
         */
        this.ProjectId = null;

        /**
         * Parent folder path, such as /aaa/bbb/ccc. path header must include a slash. pass / for the root directory.
         * @type {string || null}
         */
        this.ParentFolderPath = null;

        /**
         * Folder name or code file name.
         * @type {string || null}
         */
        this.Keyword = null;

        /**
         * Queries folder only.
         * @type {boolean || null}
         */
        this.OnlyFolderNode = null;

        /**
         * Specifies whether to query only code script created by user themselves.
         * @type {boolean || null}
         */
        this.OnlyUserSelfScript = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.ProjectId = 'ProjectId' in params ? params.ProjectId : null;
        this.ParentFolderPath = 'ParentFolderPath' in params ? params.ParentFolderPath : null;
        this.Keyword = 'Keyword' in params ? params.Keyword : null;
        this.OnlyFolderNode = 'OnlyFolderNode' in params ? params.OnlyFolderNode : null;
        this.OnlyUserSelfScript = 'OnlyUserSelfScript' in params ? params.OnlyUserSelfScript : null;

    }
}

/**
 * GetWorkflow request structure.
 * @class
 */
class GetWorkflowRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Project ID.
         * @type {string || null}
         */
        this.ProjectId = null;

        /**
         * Workflow ID. Obtained through the  ListWorkflows API.
         * @type {string || null}
         */
        this.WorkflowId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.ProjectId = 'ProjectId' in params ? params.ProjectId : null;
        this.WorkflowId = 'WorkflowId' in params ? params.WorkflowId : null;

    }
}

/**
 * Workflow scheduling details.
 * @class
 */
class OpsWorkflowDetail extends  AbstractModel {
    constructor(){
        super();

        /**
         * Workflow ID.

         * @type {string || null}
         */
        this.WorkflowId = null;

        /**
         * Workflow description.

         * @type {string || null}
         */
        this.WorkflowDesc = null;

        /**
         * Specifies the workflow type.
-cycle.
-manual.
         * @type {string || null}
         */
        this.WorkflowType = null;

        /**
         * Creation time.

         * @type {string || null}
         */
        this.CreateTime = null;

        /**
         * Creator

         * @type {string || null}
         */
        this.CreateUserUin = null;

        /**
         * Modification time.

         * @type {string || null}
         */
        this.UpdateTime = null;

        /**
         * Delayed execution time. unit: minute.

         * @type {number || null}
         */
        this.StartupTime = null;

        /**
         * Effective date. specifies the start date.

         * @type {string || null}
         */
        this.StartTime = null;

        /**
         * Configure end date end date.

         * @type {string || null}
         */
        this.EndTime = null;

        /**
         * Task Cycle Type

* ONEOFF_CYCLE: One-time

* YEAR_CYCLE: Yearly

* MONTH_CYCLE: Monthly

* WEEK_CYCLE: Weekly

* DAY_CYCLE: Daily

* HOUR_CYCLE: Hourly

* MINUTE_CYCLE: Minute-level

* CRONTAB_CYCLE: Crontab expression-based
         * @type {string || null}
         */
        this.CycleType = null;

        /**
         * Folder ID


         * @type {string || null}
         */
        this.FolderId = null;

        /**
         * Task instance initialization strategy.
-T_PLUS_1 (t+1): initializes with a one-day delay.
-T_PLUS_0 (t+0): initialize on the day.
-T_MINUS_1 (t-1): initialize one day in advance.

         * @type {string || null}
         */
        this.InstanceInitStrategy = null;

        /**
         * Specifies the scheduling plan interpretation.

         * @type {string || null}
         */
        this.SchedulerDesc = null;

        /**
         * First submission time of workflow.

         * @type {string || null}
         */
        this.FirstSubmitTime = null;

        /**
         * Latest submission time of workflow.

         * @type {string || null}
         */
        this.LatestSubmitTime = null;

        /**
         * Workflow Status

* ALL_RUNNING: All running (all workflows are in scheduling state)

* ALL_FREEZED: All paused

* ALL_STOPPTED: All stopped

* PART_RUNNING: Partially running (some workflows are running, others not)

* ALL_NO_RUNNING: All not scheduled

* ALL_INVALID: All invalid
         * @type {string || null}
         */
        this.Status = null;

        /**
         * Person in charge. multiple values are separated by a ";" separator.
         * @type {string || null}
         */
        this.OwnerUin = null;

        /**
         * Workflow name.

         * @type {string || null}
         */
        this.WorkflowName = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.WorkflowId = 'WorkflowId' in params ? params.WorkflowId : null;
        this.WorkflowDesc = 'WorkflowDesc' in params ? params.WorkflowDesc : null;
        this.WorkflowType = 'WorkflowType' in params ? params.WorkflowType : null;
        this.CreateTime = 'CreateTime' in params ? params.CreateTime : null;
        this.CreateUserUin = 'CreateUserUin' in params ? params.CreateUserUin : null;
        this.UpdateTime = 'UpdateTime' in params ? params.UpdateTime : null;
        this.StartupTime = 'StartupTime' in params ? params.StartupTime : null;
        this.StartTime = 'StartTime' in params ? params.StartTime : null;
        this.EndTime = 'EndTime' in params ? params.EndTime : null;
        this.CycleType = 'CycleType' in params ? params.CycleType : null;
        this.FolderId = 'FolderId' in params ? params.FolderId : null;
        this.InstanceInitStrategy = 'InstanceInitStrategy' in params ? params.InstanceInitStrategy : null;
        this.SchedulerDesc = 'SchedulerDesc' in params ? params.SchedulerDesc : null;
        this.FirstSubmitTime = 'FirstSubmitTime' in params ? params.FirstSubmitTime : null;
        this.LatestSubmitTime = 'LatestSubmitTime' in params ? params.LatestSubmitTime : null;
        this.Status = 'Status' in params ? params.Status : null;
        this.OwnerUin = 'OwnerUin' in params ? params.OwnerUin : null;
        this.WorkflowName = 'WorkflowName' in params ? params.WorkflowName : null;

    }
}

/**
 * Delete workflow result.
 * @class
 */
class DeleteWorkflowResult extends  AbstractModel {
    constructor(){
        super();

        /**
         * Indicates whether the workflow deletion was successful
         * @type {boolean || null}
         */
        this.Status = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Status = 'Status' in params ? params.Status : null;

    }
}

/**
 * Specifies task scheduling configuration info.
 * @class
 */
class TaskSchedulerConfiguration extends  AbstractModel {
    constructor(){
        super();

        /**
         * Period type. Supported types:

ONEOFF_CYCLE: specifies a one-time cycle.
YEAR_CYCLE: specifies the year cycle.
MONTH_CYCLE: specifies the monthly cycle.
WEEK_CYCLE: specifies the week cycle.
DAY_CYCLE: specifies the day cycle.
HOUR_CYCLE: specifies the hour cycle.
MINUTE_CYCLE: specifies the minute cycle.
CRONTAB_CYCLE: specifies the crontab expression type
         * @type {string || null}
         */
        this.CycleType = null;

        /**
         * Time zone.
         * @type {string || null}
         */
        this.ScheduleTimeZone = null;

        /**
         * 0 2 3 1,L,2 * ?	

         * @type {string || null}
         */
        this.CrontabExpression = null;

        /**
         * Effective date.

         * @type {string || null}
         */
        this.StartTime = null;

        /**
         * End date

         * @type {string || null}
         */
        this.EndTime = null;

        /**
         * Execution time. the left-closed interval.

         * @type {string || null}
         */
        this.ExecutionStartTime = null;

        /**
         * Execution time. right closed interval.

         * @type {string || null}
         */
        this.ExecutionEndTime = null;

        /**
         * Scheduling type: 0 for normal scheduling, 1 for dry-run scheduling.

         * @type {number || null}
         */
        this.ScheduleRunType = null;

        /**
         * Whether calendar scheduling is enabled. Valid values: 1 (enabled), 0 (disabled).
         * @type {string || null}
         */
        this.CalendarOpen = null;

        /**
         * Calendar id.
         * @type {string || null}
         */
        this.CalendarId = null;

        /**
         * Calendar name, which needs to be obtained from DescribeScheduleCalendarPageList API.
         * @type {string || null}
         */
        this.CalendarName = null;

        /**
         * Self-Dependent. Valid values: parallel, serial, orderly. Default value: serial. 
         * @type {string || null}
         */
        this.SelfDepend = null;

        /**
         * Specifies the upstream dependency array.
         * @type {Array.<DependencyTaskBrief> || null}
         */
        this.UpstreamDependencyConfigList = null;

        /**
         * SpecSpecifies the downstream dependency array.

         * @type {Array.<DependencyTaskBrief> || null}
         */
        this.DownStreamDependencyConfigList = null;

        /**
         * Array of Events

         * @type {Array.<EventListener> || null}
         */
        this.EventListenerList = null;

        /**
         * Task scheduling priority. valid values: 4 (high), 5 (medium), 6 (low). default: 6.

         * @type {number || null}
         */
        this.RunPriority = null;

        /**
         * Retry policy. retry wait time in minutes. default: 5.

         * @type {number || null}
         */
        this.RetryWait = null;

        /**
         * Specifies the maximum attempts of the retry policy. default: 4.

         * @type {number || null}
         */
        this.MaxRetryAttempts = null;

        /**
         * Timeout Handling Policy: Execution Timeout (in minutes), default: -1

         * @type {number || null}
         */
        this.ExecutionTTL = null;

        /**
         * Timeout Handling Policy: Wait Duration Timeout  (in minutes), default: -1
         * @type {string || null}
         */
        this.WaitExecutionTotalTTL = null;

        /**
         * Rerun & Refill Configuration: Default: ALL;

* ALL: Rerun or refill is allowed regardless of whether the task succeeds or fails.

* FAILURE: Rerun or refill is allowed only if the task fails; not allowed if the task succeeds.

* NONE: Rerun or refill is not allowed regardless of success or failure.
         * @type {string || null}
         */
        this.AllowRedoType = null;

        /**
         * Output parameter list.
         * @type {Array.<OutTaskParameter> || null}
         */
        this.ParamTaskOutList = null;

        /**
         * Input parameter list.
         * @type {Array.<InTaskParameter> || null}
         */
        this.ParamTaskInList = null;

        /**
         * Output registration.
         * @type {Array.<TaskDataRegistry> || null}
         */
        this.TaskOutputRegistryList = null;

        /**
         * **Instance generation policy**.
T_PLUS_0: specifies t+0 generation. default policy.
T_PLUS_1: specifies t+1 generation.
         * @type {string || null}
         */
        this.InitStrategy = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.CycleType = 'CycleType' in params ? params.CycleType : null;
        this.ScheduleTimeZone = 'ScheduleTimeZone' in params ? params.ScheduleTimeZone : null;
        this.CrontabExpression = 'CrontabExpression' in params ? params.CrontabExpression : null;
        this.StartTime = 'StartTime' in params ? params.StartTime : null;
        this.EndTime = 'EndTime' in params ? params.EndTime : null;
        this.ExecutionStartTime = 'ExecutionStartTime' in params ? params.ExecutionStartTime : null;
        this.ExecutionEndTime = 'ExecutionEndTime' in params ? params.ExecutionEndTime : null;
        this.ScheduleRunType = 'ScheduleRunType' in params ? params.ScheduleRunType : null;
        this.CalendarOpen = 'CalendarOpen' in params ? params.CalendarOpen : null;
        this.CalendarId = 'CalendarId' in params ? params.CalendarId : null;
        this.CalendarName = 'CalendarName' in params ? params.CalendarName : null;
        this.SelfDepend = 'SelfDepend' in params ? params.SelfDepend : null;

        if (params.UpstreamDependencyConfigList) {
            this.UpstreamDependencyConfigList = new Array();
            for (let z in params.UpstreamDependencyConfigList) {
                let obj = new DependencyTaskBrief();
                obj.deserialize(params.UpstreamDependencyConfigList[z]);
                this.UpstreamDependencyConfigList.push(obj);
            }
        }

        if (params.DownStreamDependencyConfigList) {
            this.DownStreamDependencyConfigList = new Array();
            for (let z in params.DownStreamDependencyConfigList) {
                let obj = new DependencyTaskBrief();
                obj.deserialize(params.DownStreamDependencyConfigList[z]);
                this.DownStreamDependencyConfigList.push(obj);
            }
        }

        if (params.EventListenerList) {
            this.EventListenerList = new Array();
            for (let z in params.EventListenerList) {
                let obj = new EventListener();
                obj.deserialize(params.EventListenerList[z]);
                this.EventListenerList.push(obj);
            }
        }
        this.RunPriority = 'RunPriority' in params ? params.RunPriority : null;
        this.RetryWait = 'RetryWait' in params ? params.RetryWait : null;
        this.MaxRetryAttempts = 'MaxRetryAttempts' in params ? params.MaxRetryAttempts : null;
        this.ExecutionTTL = 'ExecutionTTL' in params ? params.ExecutionTTL : null;
        this.WaitExecutionTotalTTL = 'WaitExecutionTotalTTL' in params ? params.WaitExecutionTotalTTL : null;
        this.AllowRedoType = 'AllowRedoType' in params ? params.AllowRedoType : null;

        if (params.ParamTaskOutList) {
            this.ParamTaskOutList = new Array();
            for (let z in params.ParamTaskOutList) {
                let obj = new OutTaskParameter();
                obj.deserialize(params.ParamTaskOutList[z]);
                this.ParamTaskOutList.push(obj);
            }
        }

        if (params.ParamTaskInList) {
            this.ParamTaskInList = new Array();
            for (let z in params.ParamTaskInList) {
                let obj = new InTaskParameter();
                obj.deserialize(params.ParamTaskInList[z]);
                this.ParamTaskInList.push(obj);
            }
        }

        if (params.TaskOutputRegistryList) {
            this.TaskOutputRegistryList = new Array();
            for (let z in params.TaskOutputRegistryList) {
                let obj = new TaskDataRegistry();
                obj.deserialize(params.TaskOutputRegistryList[z]);
                this.TaskOutputRegistryList.push(obj);
            }
        }
        this.InitStrategy = 'InitStrategy' in params ? params.InitStrategy : null;

    }
}

/**
 * GetTaskInstance response structure.
 * @class
 */
class GetTaskInstanceResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Details of an instance.
         * @type {TaskInstanceDetail || null}
         */
        this.Data = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Data) {
            let obj = new TaskInstanceDetail();
            obj.deserialize(params.Data)
            this.Data = obj;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * ListDataBackfillInstances response structure.
 * @class
 */
class ListDataBackfillInstancesResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * All backfill  instances under one backfill  plan.
         * @type {BackfillInstanceCollection || null}
         */
        this.Data = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Data) {
            let obj = new BackfillInstanceCollection();
            obj.deserialize(params.Data)
            this.Data = obj;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * ListUpstreamOpsTasks request structure.
 * @class
 */
class ListUpstreamOpsTasksRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Project ID.

         * @type {string || null}
         */
        this.ProjectId = null;

        /**
         * Task ID
         * @type {string || null}
         */
        this.TaskId = null;

        /**
         * Page number
         * @type {string || null}
         */
        this.PageNumber = null;

        /**
         * Pagination size.
         * @type {string || null}
         */
        this.PageSize = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.ProjectId = 'ProjectId' in params ? params.ProjectId : null;
        this.TaskId = 'TaskId' in params ? params.TaskId : null;
        this.PageNumber = 'PageNumber' in params ? params.PageNumber : null;
        this.PageSize = 'PageSize' in params ? params.PageSize : null;

    }
}

/**
 * UpdateOpsAlarmRule request structure.
 * @class
 */
class UpdateOpsAlarmRuleRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Project ID.
         * @type {string || null}
         */
        this.ProjectId = null;

        /**
         * Specifies the unique id of the Alarm rule, obtained through the GetAlarmRule/ListAlarmRule api.
         * @type {string || null}
         */
        this.AlarmRuleId = null;

        /**
         * Specifies the new rule name of the Alarm rule.
         * @type {string || null}
         */
        this.AlarmRuleName = null;

        /**
         * Monitoring Object Type

Task-level Monitoring - Can be configured by Task / Workflow / Project:
1 = Task (default)
2 = Workflow
3 = Project

Project-level Monitoring - Monitors overall task fluctuations within a project:
7 = Project fluctuation monitoring alarm
         * @type {number || null}
         */
        this.MonitorObjectType = null;

        /**
         * Pass different business IDs based on the MonitorType setting:

1 (Task): MonitorObjectIds should be a list of task IDs.

2 (Workflow): MonitorObjectIds should be a list of workflow IDs (workflow IDs can be obtained via the ListWorkflows API).

3 (Project): MonitorObjectIds should be a list of project IDs.
         * @type {Array.<string> || null}
         */
        this.MonitorObjectIds = null;

        /**
         * Alarm Rule Monitoring Types

failure: Failure alarm

overtime: Timeout alarm

success: Success alarm

backTrackingOrRerunSuccess: Alarm when backfill/rerun succeeds

backTrackingOrRerunFailure: Alarm when backfill/rerun fails

projectFailureInstanceUpwardFluctuationAlarm: Alarm when the upward fluctuation rate of failed instances for the day exceeds the threshold

projectFailureInstanceUpwardVolatilityAlarm: Alarm when the upward fluctuation count of failed instances for the day exceeds the threshold

projectSuccessInstanceDownwardFluctuationAlarm: Alarm when the downward fluctuation rate of successful instances for the day exceeds the threshold

projectSuccessInstanceDownwardVolatilityAlarm: Alarm when the downward fluctuation count of successful instances for the day exceeds the threshold

projectFailureInstanceCountAlarm: Alarm when the number of failed instances for the day exceeds the threshold

projectFailureInstanceProportionAlarm: Alarm when the proportion of failed instances for the day exceeds the threshold

reconciliationFailure: Alarm when offline reconciliation task fails

reconciliationOvertime: Alarm when offline reconciliation task runs overtime

reconciliationMismatch: Alarm when the number of mismatched records in reconciliation exceeds the threshold
         * @type {Array.<string> || null}
         */
        this.AlarmTypes = null;

        /**
         * Alarm Rule Configuration Information

Success Alarms - No configuration required;

Failure Alarms - Can be configured to trigger on the first failure or on all retry failures;

Timeout Alarms - Require configuration of the timeout type and timeout threshold;

Project Fluctuation Alarms - Require configuration of the fluctuation rate and the debounce cycle.
         * @type {AlarmRuleDetail || null}
         */
        this.AlarmRuleDetail = null;

        /**
         * Enable status of the Alarm rule. valid values: 0 (disabled), 1 (enabled).
         * @type {number || null}
         */
        this.Status = null;

        /**
         * Alarm level. 1. ordinary, 2. important, 3. critical.
         * @type {number || null}
         */
        this.AlarmLevel = null;

        /**
         * Describes the Alarm recipient configuration message.
         * @type {Array.<AlarmGroup> || null}
         */
        this.AlarmGroups = null;

        /**
         * Alarm description.
         * @type {string || null}
         */
        this.Description = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.ProjectId = 'ProjectId' in params ? params.ProjectId : null;
        this.AlarmRuleId = 'AlarmRuleId' in params ? params.AlarmRuleId : null;
        this.AlarmRuleName = 'AlarmRuleName' in params ? params.AlarmRuleName : null;
        this.MonitorObjectType = 'MonitorObjectType' in params ? params.MonitorObjectType : null;
        this.MonitorObjectIds = 'MonitorObjectIds' in params ? params.MonitorObjectIds : null;
        this.AlarmTypes = 'AlarmTypes' in params ? params.AlarmTypes : null;

        if (params.AlarmRuleDetail) {
            let obj = new AlarmRuleDetail();
            obj.deserialize(params.AlarmRuleDetail)
            this.AlarmRuleDetail = obj;
        }
        this.Status = 'Status' in params ? params.Status : null;
        this.AlarmLevel = 'AlarmLevel' in params ? params.AlarmLevel : null;

        if (params.AlarmGroups) {
            this.AlarmGroups = new Array();
            for (let z in params.AlarmGroups) {
                let obj = new AlarmGroup();
                obj.deserialize(params.AlarmGroups[z]);
                this.AlarmGroups.push(obj);
            }
        }
        this.Description = 'Description' in params ? params.Description : null;

    }
}

/**
 * ListSQLFolderContents response structure.
 * @class
 */
class ListSQLFolderContentsResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Result list
         * @type {Array.<SQLFolderNode> || null}
         */
        this.Data = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Data) {
            this.Data = new Array();
            for (let z in params.Data) {
                let obj = new SQLFolderNode();
                obj.deserialize(params.Data[z]);
                this.Data.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * ListWorkflowFolders request structure.
 * @class
 */
class ListWorkflowFoldersRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Project ID.
         * @type {string || null}
         */
        this.ProjectId = null;

        /**
         * Parent folder absolute path, for example /abc/de, if it is root directory, pass /.
         * @type {string || null}
         */
        this.ParentFolderPath = null;

        /**
         * Data page number, equal to or greater than 1. default 1.
         * @type {number || null}
         */
        this.PageNumber = null;

        /**
         * Specifies the number of data records displayed per page. valid values: 10 to 200. default: 10.
         * @type {number || null}
         */
        this.PageSize = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.ProjectId = 'ProjectId' in params ? params.ProjectId : null;
        this.ParentFolderPath = 'ParentFolderPath' in params ? params.ParentFolderPath : null;
        this.PageNumber = 'PageNumber' in params ? params.PageNumber : null;
        this.PageSize = 'PageSize' in params ? params.PageSize : null;

    }
}

/**
 * Paginated Query of Upstream Task Dependency Details
 * @class
 */
class DependencyConfigPage extends  AbstractModel {
    constructor(){
        super();

        /**
         * Total number of records matching the query conditions.
         * @type {number || null}
         */
        this.TotalCount = null;

        /**
         * Total number of pages matching the query conditions.
         * @type {number || null}
         */
        this.TotalPageNumber = null;

        /**
         * The page number of the current request.
         * @type {number || null}
         */
        this.PageNumber = null;

        /**
         * The number of entries in the current request data page.
         * @type {number || null}
         */
        this.PageSize = null;

        /**
         * Paginated Data
         * @type {Array.<TaskDependDto> || null}
         */
        this.Items = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TotalCount = 'TotalCount' in params ? params.TotalCount : null;
        this.TotalPageNumber = 'TotalPageNumber' in params ? params.TotalPageNumber : null;
        this.PageNumber = 'PageNumber' in params ? params.PageNumber : null;
        this.PageSize = 'PageSize' in params ? params.PageSize : null;

        if (params.Items) {
            this.Items = new Array();
            for (let z in params.Items) {
                let obj = new TaskDependDto();
                obj.deserialize(params.Items[z]);
                this.Items.push(obj);
            }
        }

    }
}

/**
 * Delete resource folder result.
 * @class
 */
class DeleteFolderResult extends  AbstractModel {
    constructor(){
        super();

        /**
         * Deletion status. true indicates success, false indicates failure.
         * @type {boolean || null}
         */
        this.Status = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Status = 'Status' in params ? params.Status : null;

    }
}

/**
 * CreateResourceFile response structure.
 * @class
 */
class CreateResourceFileResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Create resource file result.
         * @type {CreateResourceFileResult || null}
         */
        this.Data = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Data) {
            let obj = new CreateResourceFileResult();
            obj.deserialize(params.Data)
            this.Data = obj;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Task configuration information.
 * @class
 */
class TaskConfiguration extends  AbstractModel {
    constructor(){
        super();

        /**
         * Base64 encoding of the code content.
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.CodeContent = null;

        /**
         * Extended attribute configuration list of the task.
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<TaskExtParameter> || null}
         */
        this.TaskExtConfigurationList = null;

        /**
         * Cluster ID

Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.DataCluster = null;

        /**
         * Specifies the specified running node.
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.BrokerIp = null;

        /**
         * Resource pool queue name. need to pass through DescribeProjectClusterQueues to obtain.
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.YarnQueue = null;

        /**
         * Source data source ID, separated by;, obtained through DescribeDataSourceWithoutInfo.
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.SourceServiceId = null;

        /**
         * Data source type. use semicolon to separate. need to pass through DescribeDataSourceWithoutInfo to obtain.
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.SourceServiceType = null;

        /**
         * Data source name. use semicolons to separate. need to pass through DescribeDataSourceWithoutInfo to obtain.
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.SourceServiceName = null;

        /**
         * TargetTarget data source ID, separated by semicolons. need to pass through DescribeDataSourceWithoutInfo to obtain.
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.TargetServiceId = null;

        /**
         * Target data source type. uses ; for separation. needs to pass through DescribeDataSourceWithoutInfo for retrieval.
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.TargetServiceType = null;

        /**
         * Target data source name. use semicolon to separate. need to pass through DescribeDataSourceWithoutInfo to obtain.
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.TargetServiceName = null;

        /**
         * Resource group ID: need to pass through DescribeNormalSchedulerExecutorGroups to obtain ExecutorGroupId.
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.ResourceGroup = null;

        /**
         * Resource group name: need to pass through DescribeNormalSchedulerExecutorGroups to obtain ExecutorGroupName.
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.ResourceGroupName = null;

        /**
         * Specifies the scheduling parameter.
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {Array.<TaskSchedulingParameter> || null}
         */
        this.TaskSchedulingParameterList = null;

        /**
         * ID used by the Bundle.
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.BundleId = null;

        /**
         * Bundle info.
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.BundleInfo = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.CodeContent = 'CodeContent' in params ? params.CodeContent : null;

        if (params.TaskExtConfigurationList) {
            this.TaskExtConfigurationList = new Array();
            for (let z in params.TaskExtConfigurationList) {
                let obj = new TaskExtParameter();
                obj.deserialize(params.TaskExtConfigurationList[z]);
                this.TaskExtConfigurationList.push(obj);
            }
        }
        this.DataCluster = 'DataCluster' in params ? params.DataCluster : null;
        this.BrokerIp = 'BrokerIp' in params ? params.BrokerIp : null;
        this.YarnQueue = 'YarnQueue' in params ? params.YarnQueue : null;
        this.SourceServiceId = 'SourceServiceId' in params ? params.SourceServiceId : null;
        this.SourceServiceType = 'SourceServiceType' in params ? params.SourceServiceType : null;
        this.SourceServiceName = 'SourceServiceName' in params ? params.SourceServiceName : null;
        this.TargetServiceId = 'TargetServiceId' in params ? params.TargetServiceId : null;
        this.TargetServiceType = 'TargetServiceType' in params ? params.TargetServiceType : null;
        this.TargetServiceName = 'TargetServiceName' in params ? params.TargetServiceName : null;
        this.ResourceGroup = 'ResourceGroup' in params ? params.ResourceGroup : null;
        this.ResourceGroupName = 'ResourceGroupName' in params ? params.ResourceGroupName : null;

        if (params.TaskSchedulingParameterList) {
            this.TaskSchedulingParameterList = new Array();
            for (let z in params.TaskSchedulingParameterList) {
                let obj = new TaskSchedulingParameter();
                obj.deserialize(params.TaskSchedulingParameterList[z]);
                this.TaskSchedulingParameterList.push(obj);
            }
        }
        this.BundleId = 'BundleId' in params ? params.BundleId : null;
        this.BundleInfo = 'BundleInfo' in params ? params.BundleInfo : null;

    }
}

/**
 * DeleteWorkflowFolder response structure.
 * @class
 */
class DeleteWorkflowFolderResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Deletion result
         * @type {DeleteFolderResult || null}
         */
        this.Data = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Data) {
            let obj = new DeleteFolderResult();
            obj.deserialize(params.Data)
            this.Data = obj;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * ListTaskInstances request structure.
 * @class
 */
class ListTaskInstancesRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * **Project ID**. specifies the project ID.
         * @type {string || null}
         */
        this.ProjectId = null;

        /**
         * **Page number. integer.**.
Used in conjunction with pageSize and cannot be less than 1. default value: 1.
         * @type {number || null}
         */
        this.PageNumber = null;

        /**
         * Specifies the number of items to display per page. default: 10. value range: 1-100.
         * @type {number || null}
         */
        this.PageSize = null;

        /**
         * Task name or task ID.
Supports fuzzy search filtering. multiple values are separated by commas.
         * @type {string || null}
         */
        this.Keyword = null;

        /**
         * **Time zone** timeZone, specifies the time zone of the passed in time string. default UTC+8.
         * @type {string || null}
         */
        this.TimeZone = null;

        /**
         * **Instance Type**

0 - Backfill instance

1 - Cyclic (scheduled) instance

2 - Non-cyclic (non-scheduled) instance
         * @type {number || null}
         */
        this.InstanceType = null;

        /**
         * **Instance Status**

WAIT_EVENT: Waiting for event

WAIT_UPSTREAM: Waiting for upstream

WAIT_RUN: Waiting to run

RUNNING: Running

SKIP_RUNNING: Skipped

FAILED_RETRY: Retrying after failure

EXPIRED: Failed

COMPLETED: Succeeded
         * @type {string || null}
         */
        this.InstanceState = null;

        /**
         * Task type Id.
         * @type {number || null}
         */
        this.TaskTypeId = null;

        /**
         * **Task Cycle Type**

ONEOFF_CYCLE: One-time

YEAR_CYCLE: Yearly

MONTH_CYCLE: Monthly

WEEK_CYCLE: Weekly

DAY_CYCLE: Daily

HOUR_CYCLE: Hourly

MINUTE_CYCLE: Minute-level

CRONTAB_CYCLE: Crontab expression-based
         * @type {string || null}
         */
        this.CycleType = null;

        /**
         * Task owner id.
         * @type {string || null}
         */
        this.OwnerUin = null;

        /**
         * Folder id
         * @type {string || null}
         */
        this.FolderId = null;

        /**
         * Workflow id of the task.
         * @type {string || null}
         */
        this.WorkflowId = null;

        /**
         * **Execution resource group Id**.
         * @type {string || null}
         */
        this.ExecutorGroupId = null;

        /**
         * **Instance Scheduled Time Filter Condition** specifies the filter start time in the time format yyyy-MM-dd HH:MM:ss.
         * @type {string || null}
         */
        this.ScheduleTimeFrom = null;

        /**
         * **Instance Scheduled Time Filter Condition** specifies the cutoff time in the format of yyyy-MM-dd HH:MM:ss.
         * @type {string || null}
         */
        this.ScheduleTimeTo = null;

        /**
         * **Instance Execution Start Time Filter Condition** specifies the start time for filtering. time format: yyyy-MM-dd HH:MM:ss.
         * @type {string || null}
         */
        this.StartTimeFrom = null;

        /**
         * **Instance Execution Start Time Filter Condition**.
Expiration time in yyyy-MM-dd HH:MM:ss format.
         * @type {string || null}
         */
        this.StartTimeTo = null;

        /**
         * **Instance Last Update Time Filter Condition**.
Expiration time in yyyy-MM-dd HH:MM:ss format.
         * @type {string || null}
         */
        this.LastUpdateTimeFrom = null;

        /**
         * **Instance Last Update Time Filter Condition**.
Expiration time in yyyy-MM-dd HH:MM:ss format.
         * @type {string || null}
         */
        this.LastUpdateTimeTo = null;

        /**
         * **Query Result Sorting Field**

SCHEDULE_DATE: Sort by scheduled execution time

START_TIME: Sort by actual execution start time

END_TIME: Sort by actual execution end time

COST_TIME: Sort by execution duration
         * @type {string || null}
         */
        this.SortColumn = null;

        /**
         * **Instance Sorting Order**

- ASC 
- DESC
         * @type {string || null}
         */
        this.SortType = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.ProjectId = 'ProjectId' in params ? params.ProjectId : null;
        this.PageNumber = 'PageNumber' in params ? params.PageNumber : null;
        this.PageSize = 'PageSize' in params ? params.PageSize : null;
        this.Keyword = 'Keyword' in params ? params.Keyword : null;
        this.TimeZone = 'TimeZone' in params ? params.TimeZone : null;
        this.InstanceType = 'InstanceType' in params ? params.InstanceType : null;
        this.InstanceState = 'InstanceState' in params ? params.InstanceState : null;
        this.TaskTypeId = 'TaskTypeId' in params ? params.TaskTypeId : null;
        this.CycleType = 'CycleType' in params ? params.CycleType : null;
        this.OwnerUin = 'OwnerUin' in params ? params.OwnerUin : null;
        this.FolderId = 'FolderId' in params ? params.FolderId : null;
        this.WorkflowId = 'WorkflowId' in params ? params.WorkflowId : null;
        this.ExecutorGroupId = 'ExecutorGroupId' in params ? params.ExecutorGroupId : null;
        this.ScheduleTimeFrom = 'ScheduleTimeFrom' in params ? params.ScheduleTimeFrom : null;
        this.ScheduleTimeTo = 'ScheduleTimeTo' in params ? params.ScheduleTimeTo : null;
        this.StartTimeFrom = 'StartTimeFrom' in params ? params.StartTimeFrom : null;
        this.StartTimeTo = 'StartTimeTo' in params ? params.StartTimeTo : null;
        this.LastUpdateTimeFrom = 'LastUpdateTimeFrom' in params ? params.LastUpdateTimeFrom : null;
        this.LastUpdateTimeTo = 'LastUpdateTimeTo' in params ? params.LastUpdateTimeTo : null;
        this.SortColumn = 'SortColumn' in params ? params.SortColumn : null;
        this.SortType = 'SortType' in params ? params.SortType : null;

    }
}

/**
 * Data exploration script configuration.
 * @class
 */
class CodeFileConfig extends  AbstractModel {
    constructor(){
        super();

        /**
         * Advanced running parameter variable replacement map-json String,String.

         * @type {string || null}
         */
        this.Params = null;

        /**
         * notebook kernel session information.

         * @type {NotebookSessionInfo || null}
         */
        this.NotebookSessionInfo = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Params = 'Params' in params ? params.Params : null;

        if (params.NotebookSessionInfo) {
            let obj = new NotebookSessionInfo();
            obj.deserialize(params.NotebookSessionInfo)
            this.NotebookSessionInfo = obj;
        }

    }
}

/**
 * Query Alarm rule list.
 * @class
 */
class ListAlarmRulesResult extends  AbstractModel {
    constructor(){
        super();

        /**
         * Page number for pagination. current page number.
         * @type {number || null}
         */
        this.PageNumber = null;

        /**
         * Specifies the number of items to display per page.
         * @type {number || null}
         */
        this.PageSize = null;

        /**
         * Total number of pages.
         * @type {number || null}
         */
        this.TotalPageNumber = null;

        /**
         * Count of all Alarm rules.
         * @type {number || null}
         */
        this.TotalCount = null;

        /**
         * Alert rule information list.
         * @type {Array.<AlarmRuleData> || null}
         */
        this.Items = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.PageNumber = 'PageNumber' in params ? params.PageNumber : null;
        this.PageSize = 'PageSize' in params ? params.PageSize : null;
        this.TotalPageNumber = 'TotalPageNumber' in params ? params.TotalPageNumber : null;
        this.TotalCount = 'TotalCount' in params ? params.TotalCount : null;

        if (params.Items) {
            this.Items = new Array();
            for (let z in params.Items) {
                let obj = new AlarmRuleData();
                obj.deserialize(params.Items[z]);
                this.Items.push(obj);
            }
        }

    }
}

/**
 * DeleteSQLScript response structure.
 * @class
 */
class DeleteSQLScriptResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Execution result
         * @type {SQLContentActionResult || null}
         */
        this.Data = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Data) {
            let obj = new SQLContentActionResult();
            obj.deserialize(params.Data)
            this.Data = obj;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * StopSQLScriptRun request structure.
 * @class
 */
class StopSQLScriptRunRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Specifies the query id.
         * @type {string || null}
         */
        this.JobId = null;

        /**
         * Project ID.
         * @type {string || null}
         */
        this.ProjectId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.JobId = 'JobId' in params ? params.JobId : null;
        this.ProjectId = 'ProjectId' in params ? params.ProjectId : null;

    }
}

/**
 * ListOpsTasks request structure.
 * @class
 */
class ListOpsTasksRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Project ID.
		
         * @type {string || null}
         */
        this.ProjectId = null;

        /**
         * Pagination size.
         * @type {string || null}
         */
        this.PageSize = null;

        /**
         * Page number
         * @type {string || null}
         */
        this.PageNumber = null;

        /**
         * Task type Id. 
-20: common data sync.
 - 25:ETLTaskType
 - 26:ETLTaskType
 - 30:python
 - 31:pyspark
 - 34:HiveSQLTaskType
 - 35:shell
 - 36:SparkSQLTaskType
 - 21:JDBCSQLTaskType
 - 32:DLCTaskType
 - 33:ImpalaTaskType
 - 40:CDWTaskType
 - 41:kettle
 - 46:DLCSparkTaskType
-47: TiOne machine learning.
 - 48:TrinoTaskType
 - 50:DLCPyspark39:spark
 - 92:mr
-38: shell script.
-70: hivesql script.
-1000: common custom business.
         * @type {string || null}
         */
        this.TaskTypeId = null;

        /**
         * Workflow ID.
         * @type {string || null}
         */
        this.WorkflowId = null;

        /**
         * Workflow name.
         * @type {string || null}
         */
        this.WorkflowName = null;

        /**
         * Owner id.
         * @type {string || null}
         */
        this.OwnerUin = null;

        /**
         * Folder ID
         * @type {string || null}
         */
        this.FolderId = null;

        /**
         * Data source ID.
         * @type {string || null}
         */
        this.SourceServiceId = null;

        /**
         * Target data source id.
         * @type {string || null}
         */
        this.TargetServiceId = null;

        /**
         * Executor Group ID
         * @type {string || null}
         */
        this.ExecutorGroupId = null;

        /**
         * Task Cycle Type:

* ONEOFF_CYCLE: One-time

* YEAR_CYCLE: Yearly

* MONTH_CYCLE: Monthly

* WEEK_CYCLE: Weekly

* DAY_CYCLE: Daily

* HOUR_CYCLE: Hourly

* MINUTE_CYCLE: Minute-level

* CRONTAB_CYCLE: Crontab expression-based
         * @type {string || null}
         */
        this.CycleType = null;

        /**
         * Task Status

-Y: Running

-F: Stopped

-O: Frozen

-T: Stopping

-INVALID: Invalid
         * @type {string || null}
         */
        this.Status = null;

        /**
         * Time zone. defaults to UTC+8.
         * @type {string || null}
         */
        this.TimeZone = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.ProjectId = 'ProjectId' in params ? params.ProjectId : null;
        this.PageSize = 'PageSize' in params ? params.PageSize : null;
        this.PageNumber = 'PageNumber' in params ? params.PageNumber : null;
        this.TaskTypeId = 'TaskTypeId' in params ? params.TaskTypeId : null;
        this.WorkflowId = 'WorkflowId' in params ? params.WorkflowId : null;
        this.WorkflowName = 'WorkflowName' in params ? params.WorkflowName : null;
        this.OwnerUin = 'OwnerUin' in params ? params.OwnerUin : null;
        this.FolderId = 'FolderId' in params ? params.FolderId : null;
        this.SourceServiceId = 'SourceServiceId' in params ? params.SourceServiceId : null;
        this.TargetServiceId = 'TargetServiceId' in params ? params.TargetServiceId : null;
        this.ExecutorGroupId = 'ExecutorGroupId' in params ? params.ExecutorGroupId : null;
        this.CycleType = 'CycleType' in params ? params.CycleType : null;
        this.Status = 'Status' in params ? params.Status : null;
        this.TimeZone = 'TimeZone' in params ? params.TimeZone : null;

    }
}

/**
 * Alarm Rule Details
 * @class
 */
class AlarmRuleData extends  AbstractModel {
    constructor(){
        super();

        /**
         * Alarm Rule ID
         * @type {string || null}
         */
        this.AlarmRuleId = null;

        /**
         * Specifies the Alarm rule name.
         * @type {string || null}
         */
        this.AlarmRuleName = null;

        /**
         * Describes the Alarm rule.
         * @type {string || null}
         */
        this.Description = null;

        /**
         * Monitoring Object Type

Task-level Monitoring - Can be configured by Task / Workflow / Project:
1 = Task (default)
2 = Workflow
3 = Project

Project-level Monitoring - Monitors overall task fluctuations within a project:
7 = Project fluctuation monitoring alarm
         * @type {number || null}
         */
        this.MonitorObjectType = null;

        /**
         * Pass different business IDs depending on the value of MonitorType:

1 (Task): MonitorObjectIds should contain a list of task IDs.

2 (Workflow): MonitorObjectIds should contain a list of workflow IDs (workflow IDs can be obtained using the ListWorkflows API).

3 (Project): MonitorObjectIds should contain a list of project IDs.
         * @type {Array.<string> || null}
         */
        this.MonitorObjectIds = null;

        /**
         * Alarm Rule Monitoring Types:

failure: Failure alarm

overtime: Timeout alarm

success: Success alarm

backTrackingOrRerunSuccess: Alarm when backfill/rerun succeeds

backTrackingOrRerunFailure: Alarm when backfill/rerun fails

projectFailureInstanceUpwardFluctuationAlarm: Alarm when the upward fluctuation rate of failed instances for the day exceeds the threshold

projectSuccessInstanceDownwardFluctuationAlarm: Alarm when the downward fluctuation rate of successful instances for the day exceeds the threshold

reconciliationFailure: Alarm when an offline reconciliation task fails

reconciliationOvertime: Alarm when an offline reconciliation task runs overtime

reconciliationMismatch: Alarm when the number of mismatched records in reconciliation exceeds the threshold
         * @type {Array.<string> || null}
         */
        this.AlarmTypes = null;

        /**
         * Whether the Alarm rule is enabled.
Valid values: 0 (disabled), 1 (enabled).
         * @type {number || null}
         */
        this.Status = null;

        /**
         * Alarm Rule Configuration Information

Success Alarms - No configuration required;

Failure Alarms - Can be configured to trigger on the first failure or on all retry failures;

Timeout Alarms - Require configuration of the timeout type and timeout threshold;

Project Fluctuation Alarms - Require configuration of the fluctuation rate and the debounce cycle.
         * @type {AlarmRuleDetail || null}
         */
        this.AlarmRuleDetail = null;

        /**
         * Alarm level. 1. ordinary, 2. important, 3. critical.
         * @type {number || null}
         */
        this.AlarmLevel = null;

        /**
         * Specifies the id of the Alarm rule creator.
         * @type {string || null}
         */
        this.OwnerUin = null;

        /**
         * The Alarm rule bound to the bundle client. it is normal if empty, otherwise it corresponds to the rule bound to the bundle client.
         * @type {string || null}
         */
        this.BundleId = null;

        /**
         * bundleId is not empty. it indicates the bound client name.

         * @type {string || null}
         */
        this.BundleInfo = null;

        /**
         * Describes the Alarm recipient configuration list.
         * @type {Array.<AlarmGroup> || null}
         */
        this.AlarmGroups = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.AlarmRuleId = 'AlarmRuleId' in params ? params.AlarmRuleId : null;
        this.AlarmRuleName = 'AlarmRuleName' in params ? params.AlarmRuleName : null;
        this.Description = 'Description' in params ? params.Description : null;
        this.MonitorObjectType = 'MonitorObjectType' in params ? params.MonitorObjectType : null;
        this.MonitorObjectIds = 'MonitorObjectIds' in params ? params.MonitorObjectIds : null;
        this.AlarmTypes = 'AlarmTypes' in params ? params.AlarmTypes : null;
        this.Status = 'Status' in params ? params.Status : null;

        if (params.AlarmRuleDetail) {
            let obj = new AlarmRuleDetail();
            obj.deserialize(params.AlarmRuleDetail)
            this.AlarmRuleDetail = obj;
        }
        this.AlarmLevel = 'AlarmLevel' in params ? params.AlarmLevel : null;
        this.OwnerUin = 'OwnerUin' in params ? params.OwnerUin : null;
        this.BundleId = 'BundleId' in params ? params.BundleId : null;
        this.BundleInfo = 'BundleInfo' in params ? params.BundleInfo : null;

        if (params.AlarmGroups) {
            this.AlarmGroups = new Array();
            for (let z in params.AlarmGroups) {
                let obj = new AlarmGroup();
                obj.deserialize(params.AlarmGroups[z]);
                this.AlarmGroups.push(obj);
            }
        }

    }
}

/**
 * CreateCodeFile request structure.
 * @class
 */
class CreateCodeFileRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Project ID.
         * @type {string || null}
         */
        this.ProjectId = null;

        /**
         * Filename of the code file.
         * @type {string || null}
         */
        this.CodeFileName = null;

        /**
         * Parent folder path, such as /aaa/bbb/ccc. the path must start with a slash. use / for the root directory.
         * @type {string || null}
         */
        this.ParentFolderPath = null;

        /**
         * Specifies the code file configuration.
         * @type {CodeFileConfig || null}
         */
        this.CodeFileConfig = null;

        /**
         * Specifies the code file content.
         * @type {string || null}
         */
        this.CodeFileContent = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.ProjectId = 'ProjectId' in params ? params.ProjectId : null;
        this.CodeFileName = 'CodeFileName' in params ? params.CodeFileName : null;
        this.ParentFolderPath = 'ParentFolderPath' in params ? params.ParentFolderPath : null;

        if (params.CodeFileConfig) {
            let obj = new CodeFileConfig();
            obj.deserialize(params.CodeFileConfig)
            this.CodeFileConfig = obj;
        }
        this.CodeFileContent = 'CodeFileContent' in params ? params.CodeFileContent : null;

    }
}

/**
 * Task downstream dependency details pagination.
 * @class
 */
class ChildDependencyConfigPage extends  AbstractModel {
    constructor(){
        super();

        /**
         * Total number of results


         * @type {number || null}
         */
        this.TotalCount = null;

        /**
         * Total pages

         * @type {number || null}
         */
        this.TotalPageNumber = null;

        /**
         * Page number.

         * @type {number || null}
         */
        this.PageNumber = null;

        /**
         * Pagination size.

         * @type {number || null}
         */
        this.PageSize = null;

        /**
         * Paging data

         * @type {Array.<OpsTaskDepend> || null}
         */
        this.Items = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TotalCount = 'TotalCount' in params ? params.TotalCount : null;
        this.TotalPageNumber = 'TotalPageNumber' in params ? params.TotalPageNumber : null;
        this.PageNumber = 'PageNumber' in params ? params.PageNumber : null;
        this.PageSize = 'PageSize' in params ? params.PageSize : null;

        if (params.Items) {
            this.Items = new Array();
            for (let z in params.Items) {
                let obj = new OpsTaskDepend();
                obj.deserialize(params.Items[z]);
                this.Items.push(obj);
            }
        }

    }
}

/**
 * SQL script file tree node.
 * @class
 */
class SQLFolderNode extends  AbstractModel {
    constructor(){
        super();

        /**
         * Unique identifier


         * @type {string || null}
         */
        this.Id = null;

        /**
         * Name

         * @type {string || null}
         */
        this.Name = null;

        /**
         * folder type, script type.

         * @type {string || null}
         */
        this.Type = null;

        /**
         * Parent folder path, such as /aaa/bbb/ccc. the path must start with a slash. use / for the root directory.

         * @type {string || null}
         */
        this.ParentFolderPath = null;

        /**
         * Whether it is a leaf node.


         * @type {boolean || null}
         */
        this.IsLeaf = null;

        /**
         * Business parameters	

         * @type {string || null}
         */
        this.Params = null;

        /**
         * Permission scope: SHARED, PRIVATE.

         * @type {string || null}
         */
        this.AccessScope = null;

        /**
         * Node path.

         * @type {string || null}
         */
        this.Path = null;

        /**
         * Creator

         * @type {string || null}
         */
        this.CreateUserUin = null;

        /**
         * Specifies the permission of the current user for nodes.	

         * @type {string || null}
         */
        this.NodePermission = null;

        /**
         * Sub-node list

         * @type {Array.<SQLFolderNode> || null}
         */
        this.Children = null;

        /**
         * Owner of the file.

         * @type {string || null}
         */
        this.OwnerUin = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Id = 'Id' in params ? params.Id : null;
        this.Name = 'Name' in params ? params.Name : null;
        this.Type = 'Type' in params ? params.Type : null;
        this.ParentFolderPath = 'ParentFolderPath' in params ? params.ParentFolderPath : null;
        this.IsLeaf = 'IsLeaf' in params ? params.IsLeaf : null;
        this.Params = 'Params' in params ? params.Params : null;
        this.AccessScope = 'AccessScope' in params ? params.AccessScope : null;
        this.Path = 'Path' in params ? params.Path : null;
        this.CreateUserUin = 'CreateUserUin' in params ? params.CreateUserUin : null;
        this.NodePermission = 'NodePermission' in params ? params.NodePermission : null;

        if (params.Children) {
            this.Children = new Array();
            for (let z in params.Children) {
                let obj = new SQLFolderNode();
                obj.deserialize(params.Children[z]);
                this.Children.push(obj);
            }
        }
        this.OwnerUin = 'OwnerUin' in params ? params.OwnerUin : null;

    }
}

/**
 * Describes the version list information of the task.
 * @class
 */
class TaskVersion extends  AbstractModel {
    constructor(){
        super();

        /**
         * Creation time
         * @type {string || null}
         */
        this.CreateTime = null;

        /**
         * Version number

         * @type {string || null}
         */
        this.VersionNum = null;

        /**
         * Creator ID
         * @type {string || null}
         */
        this.CreateUserUin = null;

        /**
         * Saved version ID
         * @type {string || null}
         */
        this.VersionId = null;

        /**
         * Version description

         * @type {string || null}
         */
        this.VersionRemark = null;

        /**
         * Approval status (only for submit version).

         * @type {string || null}
         */
        this.ApproveStatus = null;

        /**
         * Production status (only for submit version).

         * @type {string || null}
         */
        this.Status = null;

        /**
         * Approver (only for submit version).

         * @type {string || null}
         */
        this.ApproveUserUin = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.CreateTime = 'CreateTime' in params ? params.CreateTime : null;
        this.VersionNum = 'VersionNum' in params ? params.VersionNum : null;
        this.CreateUserUin = 'CreateUserUin' in params ? params.CreateUserUin : null;
        this.VersionId = 'VersionId' in params ? params.VersionId : null;
        this.VersionRemark = 'VersionRemark' in params ? params.VersionRemark : null;
        this.ApproveStatus = 'ApproveStatus' in params ? params.ApproveStatus : null;
        this.Status = 'Status' in params ? params.Status : null;
        this.ApproveUserUin = 'ApproveUserUin' in params ? params.ApproveUserUin : null;

    }
}

/**
 * GetCodeFile response structure.
 * @class
 */
class GetCodeFileResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Specifies the code file detail.
         * @type {CodeFile || null}
         */
        this.Data = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Data) {
            let obj = new CodeFile();
            obj.deserialize(params.Data)
            this.Data = obj;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Creates task configuration information.
 * @class
 */
class CreateTaskConfiguration extends  AbstractModel {
    constructor(){
        super();

        /**
         * Resource Group ID: Must be obtained via DescribeNormalSchedulerExecutorGroups API to get the ExecutorGroupId.
         * @type {string || null}
         */
        this.ResourceGroup = null;

        /**
         * Base64 encoding of the code content.
         * @type {string || null}
         */
        this.CodeContent = null;

        /**
         * Specifies the configuration list of task extended attributes.
         * @type {Array.<TaskExtParameter> || null}
         */
        this.TaskExtConfigurationList = null;

        /**
         * Cluster ID
         * @type {string || null}
         */
        this.DataCluster = null;

        /**
         * Specifies the running node.
         * @type {string || null}
         */
        this.BrokerIp = null;

        /**
         * Resource Pool Queue Name: Must be obtained using DescribeProjectClusterQueues API.
         * @type {string || null}
         */
        this.YarnQueue = null;

        /**
         * Source Data Source ID - One or more IDs separated by semicolons (;). Retrieve IDs using the DescribeDataSourceWithoutInfo API.
         * @type {string || null}
         */
        this.SourceServiceId = null;

        /**
         * Target data source ID- One or more IDs separated by semicolons (;). Retrieve IDs using the DescribeDataSourceWithoutInfo API.
         * @type {string || null}
         */
        this.TargetServiceId = null;

        /**
         * Scheduling parameter.
         * @type {Array.<TaskSchedulingParameter> || null}
         */
        this.TaskSchedulingParameterList = null;

        /**
         * ID used by the Bundle.
         * @type {string || null}
         */
        this.BundleId = null;

        /**
         * Bundle info.
         * @type {string || null}
         */
        this.BundleInfo = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.ResourceGroup = 'ResourceGroup' in params ? params.ResourceGroup : null;
        this.CodeContent = 'CodeContent' in params ? params.CodeContent : null;

        if (params.TaskExtConfigurationList) {
            this.TaskExtConfigurationList = new Array();
            for (let z in params.TaskExtConfigurationList) {
                let obj = new TaskExtParameter();
                obj.deserialize(params.TaskExtConfigurationList[z]);
                this.TaskExtConfigurationList.push(obj);
            }
        }
        this.DataCluster = 'DataCluster' in params ? params.DataCluster : null;
        this.BrokerIp = 'BrokerIp' in params ? params.BrokerIp : null;
        this.YarnQueue = 'YarnQueue' in params ? params.YarnQueue : null;
        this.SourceServiceId = 'SourceServiceId' in params ? params.SourceServiceId : null;
        this.TargetServiceId = 'TargetServiceId' in params ? params.TargetServiceId : null;

        if (params.TaskSchedulingParameterList) {
            this.TaskSchedulingParameterList = new Array();
            for (let z in params.TaskSchedulingParameterList) {
                let obj = new TaskSchedulingParameter();
                obj.deserialize(params.TaskSchedulingParameterList[z]);
                this.TaskSchedulingParameterList.push(obj);
            }
        }
        this.BundleId = 'BundleId' in params ? params.BundleId : null;
        this.BundleInfo = 'BundleInfo' in params ? params.BundleInfo : null;

    }
}

/**
 * GetOpsWorkflow response structure.
 * @class
 */
class GetOpsWorkflowResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Workflow scheduling details.
         * @type {OpsWorkflowDetail || null}
         */
        this.Data = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Data) {
            let obj = new OpsWorkflowDetail();
            obj.deserialize(params.Data)
            this.Data = obj;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Update workflow result.
 * @class
 */
class UpdateWorkflowResult extends  AbstractModel {
    constructor(){
        super();

        /**
         * Update Workflow Result
         * @type {boolean || null}
         */
        this.Status = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Status = 'Status' in params ? params.Status : null;

    }
}

/**
 * ListTaskInstanceExecutions response structure.
 * @class
 */
class ListTaskInstanceExecutionsResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Instance details.
         * @type {TaskInstanceExecutions || null}
         */
        this.Data = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Data) {
            let obj = new TaskInstanceExecutions();
            obj.deserialize(params.Data)
            this.Data = obj;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Query job upstream dependency details pagination.
 * @class
 */
class ParentDependencyConfigPage extends  AbstractModel {
    constructor(){
        super();

        /**
         * Total number of results


         * @type {number || null}
         */
        this.TotalCount = null;

        /**
         * Total pages


         * @type {number || null}
         */
        this.TotalPageNumber = null;

        /**
         * Page number.


         * @type {number || null}
         */
        this.PageNumber = null;

        /**
         * Pagination size.


         * @type {number || null}
         */
        this.PageSize = null;

        /**
         * Paging data

         * @type {Array.<OpsTaskDepend> || null}
         */
        this.Items = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TotalCount = 'TotalCount' in params ? params.TotalCount : null;
        this.TotalPageNumber = 'TotalPageNumber' in params ? params.TotalPageNumber : null;
        this.PageNumber = 'PageNumber' in params ? params.PageNumber : null;
        this.PageSize = 'PageSize' in params ? params.PageSize : null;

        if (params.Items) {
            this.Items = new Array();
            for (let z in params.Items) {
                let obj = new OpsTaskDepend();
                obj.deserialize(params.Items[z]);
                this.Items.push(obj);
            }
        }

    }
}

/**
 * SubmitTask response structure.
 * @class
 */
class SubmitTaskResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Success or failure.
         * @type {SubmitTaskResult || null}
         */
        this.Data = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Data) {
            let obj = new SubmitTaskResult();
            obj.deserialize(params.Data)
            this.Data = obj;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Paginate resource files.
 * @class
 */
class WorkflowFolderPage extends  AbstractModel {
    constructor(){
        super();

        /**
         * Data page number, equal to or greater than 1.
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.PageNumber = null;

        /**
         * Specifies the number of data records displayed per page. value range: 10 to 200.
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.PageSize = null;

        /**
         * Total number of folders.
         * @type {number || null}
         */
        this.TotalCount = null;

        /**
         * Total pages
         * @type {number || null}
         */
        this.TotalPageNumber = null;

        /**
         * Folder list.
         * @type {Array.<WorkflowFolder> || null}
         */
        this.Items = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.PageNumber = 'PageNumber' in params ? params.PageNumber : null;
        this.PageSize = 'PageSize' in params ? params.PageSize : null;
        this.TotalCount = 'TotalCount' in params ? params.TotalCount : null;
        this.TotalPageNumber = 'TotalPageNumber' in params ? params.TotalPageNumber : null;

        if (params.Items) {
            this.Items = new Array();
            for (let z in params.Items) {
                let obj = new WorkflowFolder();
                obj.deserialize(params.Items[z]);
                this.Items.push(obj);
            }
        }

    }
}

/**
 * Detailed configuration of the Alarm rule.
 * @class
 */
class AlarmRuleDetail extends  AbstractModel {
    constructor(){
        super();

        /**
         * Failure Trigger Condition

1: Trigger on the first failure

2: Trigger after all retries are completed (default)
         * @type {number || null}
         */
        this.Trigger = null;

        /**
         * Backfill/Rerun Trigger Condition

1: Trigger on the first failure

2: Trigger after all retries are completed
         * @type {number || null}
         */
        this.DataBackfillOrRerunTrigger = null;

        /**
         * Timeout configuration of the periodic instance.

         * @type {Array.<TimeOutStrategyInfo> || null}
         */
        this.TimeOutExtInfo = null;

        /**
         * Specifies the timeout configuration details for rerunning a backfill instance.

         * @type {Array.<TimeOutStrategyInfo> || null}
         */
        this.DataBackfillOrRerunTimeOutExtInfo = null;

        /**
         * Specifies the detail of Alarm configuration for project fluctuation.
         * @type {Array.<ProjectInstanceStatisticsAlarmInfo> || null}
         */
        this.ProjectInstanceStatisticsAlarmInfoList = null;

        /**
         * Describes the Alarm configuration information for offline integration reconciliation.
         * @type {Array.<ReconciliationStrategyInfo> || null}
         */
        this.ReconciliationExtInfo = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Trigger = 'Trigger' in params ? params.Trigger : null;
        this.DataBackfillOrRerunTrigger = 'DataBackfillOrRerunTrigger' in params ? params.DataBackfillOrRerunTrigger : null;

        if (params.TimeOutExtInfo) {
            this.TimeOutExtInfo = new Array();
            for (let z in params.TimeOutExtInfo) {
                let obj = new TimeOutStrategyInfo();
                obj.deserialize(params.TimeOutExtInfo[z]);
                this.TimeOutExtInfo.push(obj);
            }
        }

        if (params.DataBackfillOrRerunTimeOutExtInfo) {
            this.DataBackfillOrRerunTimeOutExtInfo = new Array();
            for (let z in params.DataBackfillOrRerunTimeOutExtInfo) {
                let obj = new TimeOutStrategyInfo();
                obj.deserialize(params.DataBackfillOrRerunTimeOutExtInfo[z]);
                this.DataBackfillOrRerunTimeOutExtInfo.push(obj);
            }
        }

        if (params.ProjectInstanceStatisticsAlarmInfoList) {
            this.ProjectInstanceStatisticsAlarmInfoList = new Array();
            for (let z in params.ProjectInstanceStatisticsAlarmInfoList) {
                let obj = new ProjectInstanceStatisticsAlarmInfo();
                obj.deserialize(params.ProjectInstanceStatisticsAlarmInfoList[z]);
                this.ProjectInstanceStatisticsAlarmInfoList.push(obj);
            }
        }

        if (params.ReconciliationExtInfo) {
            this.ReconciliationExtInfo = new Array();
            for (let z in params.ReconciliationExtInfo) {
                let obj = new ReconciliationStrategyInfo();
                obj.deserialize(params.ReconciliationExtInfo[z]);
                this.ReconciliationExtInfo.push(obj);
            }
        }

    }
}

/**
 * RerunTaskInstancesAsync request structure.
 * @class
 */
class RerunTaskInstancesAsyncRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Project ID.

         * @type {string || null}
         */
        this.ProjectId = null;

        /**
         * Instance id list. obtain from ListInstances.
         * @type {Array.<string> || null}
         */
        this.InstanceKeyList = null;

        /**
         * Rerun type. valid values: 1 (self), 3 (child), 2 (self and child). default: 1.
         * @type {string || null}
         */
        this.RerunType = null;

        /**
         * Whether to check upstream tasks: ALL (ALL), MAKE_SCOPE (select), NONE (do not check). default is NONE.
         * @type {string || null}
         */
        this.CheckParentType = null;

        /**
         * Downstream Instance Scope

* WORKFLOW: Within the current workflow (default)

* PROJECT: Within the current project

* ALL: Across all projects with cross-workflow dependencies
         * @type {string || null}
         */
        this.SonRangeType = null;

        /**
         * Specifies whether to ignore event monitoring when rerunning.
         * @type {boolean || null}
         */
        this.SkipEventListening = null;

        /**
         * Specifies the degree of concurrency for a custom instance run. if not configured, use the existing self-dependent task.
         * @type {number || null}
         */
        this.RedefineParallelNum = null;

        /**
         * Custom workflow self-dependency. valid values: yes (enable), no (disable). if not configured, use the existing workflow self-dependency.
         * @type {string || null}
         */
        this.RedefineSelfWorkflowDependency = null;

        /**
         * Rerun instance custom parameter.
         * @type {KVMap || null}
         */
        this.RedefineParamList = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.ProjectId = 'ProjectId' in params ? params.ProjectId : null;
        this.InstanceKeyList = 'InstanceKeyList' in params ? params.InstanceKeyList : null;
        this.RerunType = 'RerunType' in params ? params.RerunType : null;
        this.CheckParentType = 'CheckParentType' in params ? params.CheckParentType : null;
        this.SonRangeType = 'SonRangeType' in params ? params.SonRangeType : null;
        this.SkipEventListening = 'SkipEventListening' in params ? params.SkipEventListening : null;
        this.RedefineParallelNum = 'RedefineParallelNum' in params ? params.RedefineParallelNum : null;
        this.RedefineSelfWorkflowDependency = 'RedefineSelfWorkflowDependency' in params ? params.RedefineSelfWorkflowDependency : null;

        if (params.RedefineParamList) {
            let obj = new KVMap();
            obj.deserialize(params.RedefineParamList)
            this.RedefineParamList = obj;
        }

    }
}

/**
 * Query Task Info (Paginated)
 * @class
 */
class ListTaskInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Task Array

         * @type {Array.<TaskBaseAttribute> || null}
         */
        this.Items = null;

        /**
         * Current request data page number.

         * @type {number || null}
         */
        this.PageNumber = null;

        /**
         * Number of entries in the current request.

         * @type {number || null}
         */
        this.PageSize = null;

        /**
         * Total number of data entries that meet the query condition.
         * @type {number || null}
         */
        this.TotalCount = null;

        /**
         * Total number of pages that meet the query condition.

         * @type {number || null}
         */
        this.TotalPageNumber = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Items) {
            this.Items = new Array();
            for (let z in params.Items) {
                let obj = new TaskBaseAttribute();
                obj.deserialize(params.Items[z]);
                this.Items.push(obj);
            }
        }
        this.PageNumber = 'PageNumber' in params ? params.PageNumber : null;
        this.PageSize = 'PageSize' in params ? params.PageSize : null;
        this.TotalCount = 'TotalCount' in params ? params.TotalCount : null;
        this.TotalPageNumber = 'TotalPageNumber' in params ? params.TotalPageNumber : null;

    }
}

/**
 * Backfill plan date range.
 * @class
 */
class DataBackfillRange extends  AbstractModel {
    constructor(){
        super();

        /**
         * Start date in yyyy-MM-dd format. indicates the start from 00:00:00 on the specified date.

         * @type {string || null}
         */
        this.StartDate = null;

        /**
         * End date in the format yyyy-MM-dd, indicates ending at 23:59:59 of the specified date.

         * @type {string || null}
         */
        this.EndDate = null;

        /**
         * Start time of each day between [StartDate, EndDate] in HH:mm format. effective for tasks with a period of hours or less.

         * @type {string || null}
         */
        this.ExecutionStartTime = null;

        /**
         * End time point between [StartDate, EndDate] in HH:mm format. effective for tasks with a period of hours or less.

         * @type {string || null}
         */
        this.ExecutionEndTime = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.StartDate = 'StartDate' in params ? params.StartDate : null;
        this.EndDate = 'EndDate' in params ? params.EndDate : null;
        this.ExecutionStartTime = 'ExecutionStartTime' in params ? params.ExecutionStartTime : null;
        this.ExecutionEndTime = 'ExecutionEndTime' in params ? params.ExecutionEndTime : null;

    }
}

/**
 * CreateTask response structure.
 * @class
 */
class CreateTaskResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Task ID
         * @type {CreateTaskResult || null}
         */
        this.Data = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Data) {
            let obj = new CreateTaskResult();
            obj.deserialize(params.Data)
            this.Data = obj;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Unified workflow scheduling response parameters structure.
 * @class
 */
class WorkflowSchedulerConfiguration extends  AbstractModel {
    constructor(){
        super();

        /**
         * Specifies the time zone.
         * @type {string || null}
         */
        this.ScheduleTimeZone = null;

        /**
         * Period type. Supported types:

ONEOFF_CYCLE: specifies a one-time cycle.
YEAR_CYCLE: specifies the year cycle.
MONTH_CYCLE: specifies the monthly cycle.
WEEK_CYCLE: specifies the week cycle.
DAY_CYCLE: specifies the day cycle.
HOUR_CYCLE: specifies the hour cycle.
MINUTE_CYCLE: specifies the minute cycle.
CRONTAB_CYCLE: specifies the crontab expression type
         * @type {string || null}
         */
        this.CycleType = null;

        /**
         * Self-Dependent. Valid values: parallel, serial, orderly. Default value: serial. 
         * @type {string || null}
         */
        this.SelfDepend = null;

        /**
         * Effective Start Time
         * @type {string || null}
         */
        this.StartTime = null;

        /**
         * Effective End Time.
         * @type {string || null}
         */
        this.EndTime = null;

        /**
         * Workflow dependency. Valid values: yes or no.
         * @type {string || null}
         */
        this.DependencyWorkflow = null;

        /**
         * Execution time. specifies the left-closed interval. example: 00:00.
         * @type {string || null}
         */
        this.ExecutionStartTime = null;

        /**
         * Execution time right closed interval, for example: 23:59.

         * @type {string || null}
         */
        this.ExecutionEndTime = null;

        /**
         * Cron expression


         * @type {string || null}
         */
        this.CrontabExpression = null;

        /**
         * Whether calendar scheduling is enabled. Valid values: 1 (enabled), 0 (disabled).
         * @type {string || null}
         */
        this.CalendarOpen = null;

        /**
         * Calendar name.
         * @type {string || null}
         */
        this.CalendarName = null;

        /**
         * Calendar id.
         * @type {string || null}
         */
        this.CalendarId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.ScheduleTimeZone = 'ScheduleTimeZone' in params ? params.ScheduleTimeZone : null;
        this.CycleType = 'CycleType' in params ? params.CycleType : null;
        this.SelfDepend = 'SelfDepend' in params ? params.SelfDepend : null;
        this.StartTime = 'StartTime' in params ? params.StartTime : null;
        this.EndTime = 'EndTime' in params ? params.EndTime : null;
        this.DependencyWorkflow = 'DependencyWorkflow' in params ? params.DependencyWorkflow : null;
        this.ExecutionStartTime = 'ExecutionStartTime' in params ? params.ExecutionStartTime : null;
        this.ExecutionEndTime = 'ExecutionEndTime' in params ? params.ExecutionEndTime : null;
        this.CrontabExpression = 'CrontabExpression' in params ? params.CrontabExpression : null;
        this.CalendarOpen = 'CalendarOpen' in params ? params.CalendarOpen : null;
        this.CalendarName = 'CalendarName' in params ? params.CalendarName : null;
        this.CalendarId = 'CalendarId' in params ? params.CalendarId : null;

    }
}

/**
 * GetSQLScript request structure.
 * @class
 */
class GetSQLScriptRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Script Id.
         * @type {string || null}
         */
        this.ScriptId = null;

        /**
         * Project ID.

         * @type {string || null}
         */
        this.ProjectId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.ScriptId = 'ScriptId' in params ? params.ScriptId : null;
        this.ProjectId = 'ProjectId' in params ? params.ProjectId : null;

    }
}

/**
 * CreateDataBackfillPlan response structure.
 * @class
 */
class CreateDataBackfillPlanResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Specifies the creation result of the data backfill plan.
         * @type {CreateDataReplenishmentPlan || null}
         */
        this.Data = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Data) {
            let obj = new CreateDataReplenishmentPlan();
            obj.deserialize(params.Data)
            this.Data = obj;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DeleteCodeFile response structure.
 * @class
 */
class DeleteCodeFileResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Execution result
         * @type {CodeStudioFileActionResult || null}
         */
        this.Data = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Data) {
            let obj = new CodeStudioFileActionResult();
            obj.deserialize(params.Data)
            this.Data = obj;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Describes the details of an instance.
 * @class
 */
class InstanceExecution extends  AbstractModel {
    constructor(){
        super();

        /**
         * Instance unique identifier.

         * @type {string || null}
         */
        this.InstanceKey = null;

        /**
         * **Instance lifecycle number, identifies one-time execution of the instance.**.

For example, the first run of a periodic instance is numbered 0. if the user reruns the instance subsequently, the second execution is numbered 1.

         * @type {number || null}
         */
        this.LifeRoundNum = null;

        /**
         * **Instance status**.
-WAIT_EVENT: specifies the wait for event.
-WAIT_UPSTREAM: waiting for upstream.
- WAIT_RUN: awaiting execution.
- RUNNING: indicates the instance is RUNNING.
- SKIP_RUNNING: SKIP RUNNING.
- FAILED_RETRY: RETRY on failure.
- EXPIRED: failed.
-COMPLETED: success.

         * @type {string || null}
         */
        this.InstanceState = null;

        /**
         * **Trigger type for instance running**.

-RERUN indicates a rerun.
-ADDITION indicates supplementary recording.
-PERIODIC indicates a period.
-APERIODIC indicates non-periodic.
-RERUN_SKIP_RUN indicates rerun - empty run.
-ADDITION_SKIP_RUN indicates a supplementary empty run.
-PERIODIC_SKIP_RUN indicates cycle - empty run.
-APERIODIC_SKIP_RUN indicates non-periodic empty run.
-MANUAL_TRIGGER indicates manual triggering.
-RERUN_MANUAL_TRIGGER indicates manual triggering - rerun.
         * @type {string || null}
         */
        this.RunType = null;

        /**
         * Specifies the number of retry attempts on failure.

         * @type {number || null}
         */
        this.Tries = null;

        /**
         * **Specifies the lifecycle list for instance execution.**.

         * @type {Array.<InstanceExecutionPhase> || null}
         */
        this.ExecutionPhaseList = null;

        /**
         * Time spent, in milliseconds.

         * @type {number || null}
         */
        this.CostTime = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.InstanceKey = 'InstanceKey' in params ? params.InstanceKey : null;
        this.LifeRoundNum = 'LifeRoundNum' in params ? params.LifeRoundNum : null;
        this.InstanceState = 'InstanceState' in params ? params.InstanceState : null;
        this.RunType = 'RunType' in params ? params.RunType : null;
        this.Tries = 'Tries' in params ? params.Tries : null;

        if (params.ExecutionPhaseList) {
            this.ExecutionPhaseList = new Array();
            for (let z in params.ExecutionPhaseList) {
                let obj = new InstanceExecutionPhase();
                obj.deserialize(params.ExecutionPhaseList[z]);
                this.ExecutionPhaseList.push(obj);
            }
        }
        this.CostTime = 'CostTime' in params ? params.CostTime : null;

    }
}

/**
 * Scheduling task instance entity.
 * @class
 */
class TaskInstance extends  AbstractModel {
    constructor(){
        super();

        /**
         * Project id.
         * @type {string || null}
         */
        this.ProjectId = null;

        /**
         * **Instance unique id**.
         * @type {string || null}
         */
        this.InstanceKey = null;

        /**
         * Folder ID.

         * @type {string || null}
         */
        this.FolderId = null;

        /**
         * Folder name.
         * @type {string || null}
         */
        this.FolderName = null;

        /**
         * Workflow ID.
         * @type {string || null}
         */
        this.WorkflowId = null;

        /**
         * Workflow name.

         * @type {string || null}
         */
        this.WorkflowName = null;

        /**
         * Task ID
         * @type {string || null}
         */
        this.TaskId = null;

        /**
         * Task name.

         * @type {string || null}
         */
        this.TaskName = null;

        /**
         * Instance data time.
         * @type {string || null}
         */
        this.CurRunDate = null;

        /**
         * **Instance status**.
-WAIT_EVENT: specifies the wait for event.
-WAIT_UPSTREAM: waiting for upstream.
- WAIT_RUN: awaiting execution.
- RUNNING: indicates the instance is RUNNING.
- SKIP_RUNNING: SKIP RUNNING.
- FAILED_RETRY: RETRY on failure.
- EXPIRED: failed.
-COMPLETED: success.
         * @type {string || null}
         */
        this.InstanceState = null;

        /**
         * Specifies the instance type.

-0 indicates the supplementary entry type.
-Indicates a periodic instance.
-2 indicates a non-periodic instance.
         * @type {number || null}
         */
        this.InstanceType = null;

        /**
         * Owner Uin list.
         * @type {Array.<string> || null}
         */
        this.OwnerUinList = null;

        /**
         * Cumulative running times.

         * @type {number || null}
         */
        this.TotalRunNum = null;

        /**
         * Task type description.
         * @type {string || null}
         */
        this.TaskType = null;

        /**
         * Task type id.

         * @type {number || null}
         */
        this.TaskTypeId = null;

        /**
         * Task Cycle Type

* ONEOFF_CYCLE: One-time

* YEAR_CYCLE: Yearly

* MONTH_CYCLE: Monthly

* WEEK_CYCLE: Weekly

* DAY_CYCLE: Daily

* HOUR_CYCLE: Hourly

* MINUTE_CYCLE: Minute-level

* CRONTAB_CYCLE: Crontab expression-based
         * @type {string || null}
         */
        this.CycleType = null;

        /**
         * Retry count limit when execution fails each time.

         * @type {number || null}
         */
        this.TryLimit = null;

        /**
         * Specifies the number of retry attempts on failure.
When triggered by manual rerun, supplementary entry instance, or other methods, the count will be reset to 0 and start again.
         * @type {number || null}
         */
        this.Tries = null;

        /**
         * Operation start time.
         * @type {string || null}
         */
        this.StartTime = null;

        /**
         * Operation completion time.
         * @type {string || null}
         */
        this.EndTime = null;

        /**
         * Time spent, in milliseconds.

         * @type {number || null}
         */
        this.CostTime = null;

        /**
         * Scheduled dispatch time.

         * @type {string || null}
         */
        this.SchedulerTime = null;

        /**
         * Latest update time of the instance. specifies the time format as yyyy-MM-dd HH:MM:ss.

         * @type {string || null}
         */
        this.LastUpdateTime = null;

        /**
         * Execution resource group ID.

         * @type {string || null}
         */
        this.ExecutorGroupId = null;

        /**
         * Resource group name.

         * @type {string || null}
         */
        this.ExecutorGroupName = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.ProjectId = 'ProjectId' in params ? params.ProjectId : null;
        this.InstanceKey = 'InstanceKey' in params ? params.InstanceKey : null;
        this.FolderId = 'FolderId' in params ? params.FolderId : null;
        this.FolderName = 'FolderName' in params ? params.FolderName : null;
        this.WorkflowId = 'WorkflowId' in params ? params.WorkflowId : null;
        this.WorkflowName = 'WorkflowName' in params ? params.WorkflowName : null;
        this.TaskId = 'TaskId' in params ? params.TaskId : null;
        this.TaskName = 'TaskName' in params ? params.TaskName : null;
        this.CurRunDate = 'CurRunDate' in params ? params.CurRunDate : null;
        this.InstanceState = 'InstanceState' in params ? params.InstanceState : null;
        this.InstanceType = 'InstanceType' in params ? params.InstanceType : null;
        this.OwnerUinList = 'OwnerUinList' in params ? params.OwnerUinList : null;
        this.TotalRunNum = 'TotalRunNum' in params ? params.TotalRunNum : null;
        this.TaskType = 'TaskType' in params ? params.TaskType : null;
        this.TaskTypeId = 'TaskTypeId' in params ? params.TaskTypeId : null;
        this.CycleType = 'CycleType' in params ? params.CycleType : null;
        this.TryLimit = 'TryLimit' in params ? params.TryLimit : null;
        this.Tries = 'Tries' in params ? params.Tries : null;
        this.StartTime = 'StartTime' in params ? params.StartTime : null;
        this.EndTime = 'EndTime' in params ? params.EndTime : null;
        this.CostTime = 'CostTime' in params ? params.CostTime : null;
        this.SchedulerTime = 'SchedulerTime' in params ? params.SchedulerTime : null;
        this.LastUpdateTime = 'LastUpdateTime' in params ? params.LastUpdateTime : null;
        this.ExecutorGroupId = 'ExecutorGroupId' in params ? params.ExecutorGroupId : null;
        this.ExecutorGroupName = 'ExecutorGroupName' in params ? params.ExecutorGroupName : null;

    }
}

/**
 * Describes the list details of the task operation and maintenance workflow.
 * @class
 */
class TaskOpsInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Task ID
         * @type {string || null}
         */
        this.TaskId = null;

        /**
         * Task name.
         * @type {string || null}
         */
        this.TaskName = null;

        /**
         * Owner id

         * @type {string || null}
         */
        this.OwnerUin = null;

        /**
         * Task Status

-N: New

-Y: Scheduling

-F: Offline

-O: Paused

-T: Offlining

-INVALID: Invalid
         * @type {string || null}
         */
        this.Status = null;

        /**
         * Folder ID
         * @type {string || null}
         */
        this.FolderId = null;

        /**
         * Folder name.
         * @type {string || null}
         */
        this.FolderName = null;

        /**
         * Workflow id.
         * @type {string || null}
         */
        this.WorkflowId = null;

        /**
         * Workflow name.
         * @type {string || null}
         */
        this.WorkflowName = null;

        /**
         * Project ID.
         * @type {string || null}
         */
        this.ProjectId = null;

        /**
         * Project name.
         * @type {string || null}
         */
        this.ProjectName = null;

        /**
         * Specifies the name of the updater.
         * @type {string || null}
         */
        this.UpdateUserUin = null;

        /**
         * Task type Id.
* 21:JDBC SQL
* 23:TDSQL-PostgreSQL
* 26:OfflineSynchronization
* 30:Python
* 31:PySpark
* 33:Impala
* 34:Hive SQL
* 35:Shell
* 36:Spark SQL
* 38:Shell Form Mode
* 39:Spark
* 40:TCHouse-P
* 41:Kettle
* 42:Tchouse-X
* 43:TCHouse-X SQL
* 46:DLC Spark
* 47:TiOne
* 48:Trino
* 50:DLC PySpark
* 92:MapReduce
* 130:Branch Node
* 131:Merged Node
* 132:Notebook
* 133:SSH
* 134:StarRocks
* 137:For-each
* 138:Setats SQL
         * @type {number || null}
         */
        this.TaskTypeId = null;

        /**
         * Task type description.
-Universal data synchronization.
 - ETLTaskType
 - ETLTaskType
 - python
 - pyspark
 - HiveSQLTaskType
 - shell
 - SparkSQLTaskType
 - JDBCSQLTaskType
 - DLCTaskType
 - ImpalaTaskType
 - CDWTaskType
 - kettle
 - DLCSparkTaskType
-TiOne machine learning.
 - TrinoTaskType
 - DLCPyspark
 - spark
 - mr
-Specifies the shell script.
-hivesql script.
-Specifies common custom business.

         * @type {string || null}
         */
        this.TaskTypeDesc = null;

        /**
         * Task Cycle Type

* ONEOFF_CYCLE: One-time

* YEAR_CYCLE: Yearly

* MONTH_CYCLE: Monthly

* WEEK_CYCLE: Weekly

* DAY_CYCLE: Daily

* HOUR_CYCLE: Hourly

* MINUTE_CYCLE: Minute-level

* CRONTAB_CYCLE: Crontab expression-based
         * @type {string || null}
         */
        this.CycleType = null;

        /**
         * Resource group ID

         * @type {string || null}
         */
        this.ExecutorGroupId = null;

        /**
         * Scheduling description.

         * @type {string || null}
         */
        this.ScheduleDesc = null;

        /**
         * Resource group name.
         * @type {string || null}
         */
        this.ExecutorGroupName = null;

        /**
         * Latest scheduling submission time.

         * @type {string || null}
         */
        this.LastSchedulerCommitTime = null;

        /**
         * First execution time.

         * @type {string || null}
         */
        this.FirstRunTime = null;

        /**
         * Most recent submission time.
         * @type {string || null}
         */
        this.FirstSubmitTime = null;

        /**
         * Creation time.


         * @type {string || null}
         */
        this.CreateTime = null;

        /**
         * Latest update time.

         * @type {string || null}
         */
        this.LastUpdateTime = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TaskId = 'TaskId' in params ? params.TaskId : null;
        this.TaskName = 'TaskName' in params ? params.TaskName : null;
        this.OwnerUin = 'OwnerUin' in params ? params.OwnerUin : null;
        this.Status = 'Status' in params ? params.Status : null;
        this.FolderId = 'FolderId' in params ? params.FolderId : null;
        this.FolderName = 'FolderName' in params ? params.FolderName : null;
        this.WorkflowId = 'WorkflowId' in params ? params.WorkflowId : null;
        this.WorkflowName = 'WorkflowName' in params ? params.WorkflowName : null;
        this.ProjectId = 'ProjectId' in params ? params.ProjectId : null;
        this.ProjectName = 'ProjectName' in params ? params.ProjectName : null;
        this.UpdateUserUin = 'UpdateUserUin' in params ? params.UpdateUserUin : null;
        this.TaskTypeId = 'TaskTypeId' in params ? params.TaskTypeId : null;
        this.TaskTypeDesc = 'TaskTypeDesc' in params ? params.TaskTypeDesc : null;
        this.CycleType = 'CycleType' in params ? params.CycleType : null;
        this.ExecutorGroupId = 'ExecutorGroupId' in params ? params.ExecutorGroupId : null;
        this.ScheduleDesc = 'ScheduleDesc' in params ? params.ScheduleDesc : null;
        this.ExecutorGroupName = 'ExecutorGroupName' in params ? params.ExecutorGroupName : null;
        this.LastSchedulerCommitTime = 'LastSchedulerCommitTime' in params ? params.LastSchedulerCommitTime : null;
        this.FirstRunTime = 'FirstRunTime' in params ? params.FirstRunTime : null;
        this.FirstSubmitTime = 'FirstSubmitTime' in params ? params.FirstSubmitTime : null;
        this.CreateTime = 'CreateTime' in params ? params.CreateTime : null;
        this.LastUpdateTime = 'LastUpdateTime' in params ? params.LastUpdateTime : null;

    }
}

/**
 * Dependency configuration policy.
 * @class
 */
class DependencyStrategyTask extends  AbstractModel {
    constructor(){
        super();

        /**
         * Wait upstream task instance policy: EXECUTING (execute); WAITING (wait).

         * @type {string || null}
         */
        this.PollingNullStrategy = null;

        /**
         * This field is required only when PollingNullStrategy is set to EXECUTING.
Type: List

NOT_EXIST (default) - In cases where minute depends on minute / hour depends on hour, the parent instance does not fall within the scheduling time range of the downstream instance.

PARENT_EXPIRED - The parent instance failed.

PARENT_TIMEOUT - The parent instance timed out.

If any of the above conditions are met, the dependency check for that parent task instance is considered satisfied. In all other cases, the system must wait for the parent instance.
         * @type {Array.<string> || null}
         */
        this.TaskDependencyExecutingStrategies = null;

        /**
         * This field is required only when TaskDependencyExecutingStrategies includes PARENT_TIMEOUT.
Specifies the timeout duration (in minutes) for the downstream task's dependency on the parent instance execution.
         * @type {number || null}
         */
        this.TaskDependencyExecutingTimeoutValue = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.PollingNullStrategy = 'PollingNullStrategy' in params ? params.PollingNullStrategy : null;
        this.TaskDependencyExecutingStrategies = 'TaskDependencyExecutingStrategies' in params ? params.TaskDependencyExecutingStrategies : null;
        this.TaskDependencyExecutingTimeoutValue = 'TaskDependencyExecutingTimeoutValue' in params ? params.TaskDependencyExecutingTimeoutValue : null;

    }
}

/**
 * Explore data script business processing entity.
 * @class
 */
class SQLScript extends  AbstractModel {
    constructor(){
        super();

        /**
         * Script id.

         * @type {string || null}
         */
        this.ScriptId = null;

        /**
         * Script name.

         * @type {string || null}
         */
        this.ScriptName = null;

        /**
         * Specifies the script owner uin.

         * @type {string || null}
         */
        this.OwnerUin = null;

        /**
         * Parent folder path, /aaa/bbb/ccc.

         * @type {string || null}
         */
        this.ParentFolderPath = null;

        /**
         * Specifies the script configuration.

         * @type {SQLScriptConfig || null}
         */
        this.ScriptConfig = null;

        /**
         * Specifies the script content.

         * @type {string || null}
         */
        this.ScriptContent = null;

        /**
         * Latest operator.

         * @type {string || null}
         */
        this.UpdateUserUin = null;

        /**
         * Project ID.


         * @type {string || null}
         */
        this.ProjectId = null;

        /**
         * Update time. format: yyyy-MM-dd hh:MM:ss.

         * @type {string || null}
         */
        this.UpdateTime = null;

        /**
         * Creation time. format: yyyy-MM-dd hh:MM:ss.

         * @type {string || null}
         */
        this.CreateTime = null;

        /**
         * Access permission: SHARED, PRIVATE.

         * @type {string || null}
         */
        this.AccessScope = null;

        /**
         * Full path of the node, /aaa/bbb/ccc.ipynb, consists of the name of each node.

         * @type {string || null}
         */
        this.Path = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.ScriptId = 'ScriptId' in params ? params.ScriptId : null;
        this.ScriptName = 'ScriptName' in params ? params.ScriptName : null;
        this.OwnerUin = 'OwnerUin' in params ? params.OwnerUin : null;
        this.ParentFolderPath = 'ParentFolderPath' in params ? params.ParentFolderPath : null;

        if (params.ScriptConfig) {
            let obj = new SQLScriptConfig();
            obj.deserialize(params.ScriptConfig)
            this.ScriptConfig = obj;
        }
        this.ScriptContent = 'ScriptContent' in params ? params.ScriptContent : null;
        this.UpdateUserUin = 'UpdateUserUin' in params ? params.UpdateUserUin : null;
        this.ProjectId = 'ProjectId' in params ? params.ProjectId : null;
        this.UpdateTime = 'UpdateTime' in params ? params.UpdateTime : null;
        this.CreateTime = 'CreateTime' in params ? params.CreateTime : null;
        this.AccessScope = 'AccessScope' in params ? params.AccessScope : null;
        this.Path = 'Path' in params ? params.Path : null;

    }
}

/**
 * Describes the basic attribute information of the task.
 * @class
 */
class CreateTaskBaseAttribute extends  AbstractModel {
    constructor(){
        super();

        /**
         * Task name.
         * @type {string || null}
         */
        this.TaskName = null;

        /**
         * Task type ID:

* 21:JDBC SQL
* 23:TDSQL-PostgreSQL
* 26:OfflineSynchronization
* 30:Python
* 31:PySpark
* 32:DLC SQL
* 33:Impala
* 34:Hive SQL
* 35:Shell
* 36:Spark SQL
* 38:Shell Form Mode
* 39:Spark
* 40:TCHouse-P
* 41:Kettle
* 42:Tchouse-X
* 43:TCHouse-X SQL
* 46:DLC Spark
* 47:TiOne
* 48:Trino
* 50:DLC PySpark
* 92:MapReduce
* 130:Branch Node
* 131:Merged Node
* 132:Notebook
* 133:SSH
* 134:StarRocks
* 137:For-each
* 138:Setats SQL
         * @type {string || null}
         */
        this.TaskTypeId = null;

        /**
         * Workflow ID.
         * @type {string || null}
         */
        this.WorkflowId = null;

        /**
         * Task owner ID. defaults to the current user.
         * @type {string || null}
         */
        this.OwnerUin = null;

        /**
         * Task description
         * @type {string || null}
         */
        this.TaskDescription = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TaskName = 'TaskName' in params ? params.TaskName : null;
        this.TaskTypeId = 'TaskTypeId' in params ? params.TaskTypeId : null;
        this.WorkflowId = 'WorkflowId' in params ? params.WorkflowId : null;
        this.OwnerUin = 'OwnerUin' in params ? params.OwnerUin : null;
        this.TaskDescription = 'TaskDescription' in params ? params.TaskDescription : null;

    }
}

/**
 * Creates a data backfill plan result.
 * @class
 */
class CreateDataReplenishmentPlan extends  AbstractModel {
    constructor(){
        super();

        /**
         * Specifies the backfill plan Id.
         * @type {string || null}
         */
        this.DataBackfillPlanId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.DataBackfillPlanId = 'DataBackfillPlanId' in params ? params.DataBackfillPlanId : null;

    }
}

/**
 * KillTaskInstancesAsync response structure.
 * @class
 */
class KillTaskInstancesAsyncResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Async id of the batch termination operation. can be used in the GetAsyncJob API to query execution detail.
         * @type {OpsAsyncResponse || null}
         */
        this.Data = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Data) {
            let obj = new OpsAsyncResponse();
            obj.deserialize(params.Data)
            this.Data = obj;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * StopOpsTasksAsync response structure.
 * @class
 */
class StopOpsTasksAsyncResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * AsyncId
         * @type {OpsAsyncResponse || null}
         */
        this.Data = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Data) {
            let obj = new OpsAsyncResponse();
            obj.deserialize(params.Data)
            this.Data = obj;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * PauseOpsTasksAsync response structure.
 * @class
 */
class PauseOpsTasksAsyncResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Asynchronous operation result.
         * @type {OpsAsyncResponse || null}
         */
        this.Data = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Data) {
            let obj = new OpsAsyncResponse();
            obj.deserialize(params.Data)
            this.Data = obj;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * CreateWorkflow response structure.
 * @class
 */
class CreateWorkflowResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Returns the workflow ID.
         * @type {CreateWorkflowResult || null}
         */
        this.Data = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Data) {
            let obj = new CreateWorkflowResult();
            obj.deserialize(params.Data)
            this.Data = obj;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Alarm timeout configuration rule information.
 * @class
 */
class TimeOutStrategyInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Timeout Alarm Configuration

Expected Execution Duration Timeout - The actual runtime exceeds the estimated execution duration.

Expected Completion Time Timeout - The task has not completed by the estimated completion time.

Expected Scheduling Wait Timeout - The waiting time in the scheduling queue exceeds the estimated wait time.

Cycle-Incomplete Timeout - The task was expected to complete within its scheduled cycle but did not.
         * @type {number || null}
         */
        this.RuleType = null;

        /**
         * Timeout Value Configuration Type

1: Fixed value (specified manually)

2: Average value (calculated automatically)
         * @type {number || null}
         */
        this.Type = null;

        /**
         * Timeout Specified Value (hours) - The timeout threshold in hours. Default is 1.
         * @type {number || null}
         */
        this.Hour = null;

        /**
         * Timeout Specified Value (minutes) - The timeout threshold in minutes. Default is 1.
         * @type {number || null}
         */
        this.Min = null;

        /**
         * The time zone configuration corresponding to the timeout, such as UTC+7, defaults to UTC+8.

         * @type {string || null}
         */
        this.ScheduleTimeZone = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RuleType = 'RuleType' in params ? params.RuleType : null;
        this.Type = 'Type' in params ? params.Type : null;
        this.Hour = 'Hour' in params ? params.Hour : null;
        this.Min = 'Min' in params ? params.Min : null;
        this.ScheduleTimeZone = 'ScheduleTimeZone' in params ? params.ScheduleTimeZone : null;

    }
}

/**
 * DeleteTask response structure.
 * @class
 */
class DeleteTaskResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Whether deletion succeeded.
         * @type {DeleteTaskResult || null}
         */
        this.Data = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Data) {
            let obj = new DeleteTaskResult();
            obj.deserialize(params.Data)
            this.Data = obj;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * GetTaskInstanceLog response structure.
 * @class
 */
class GetTaskInstanceLogResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Details of a scheduled instance.
         * @type {InstanceLog || null}
         */
        this.Data = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Data) {
            let obj = new InstanceLog();
            obj.deserialize(params.Data)
            this.Data = obj;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Alarm rule recipient configuration.
 * @class
 */
class AlarmGroup extends  AbstractModel {
    constructor(){
        super();

        /**
         * Specifies the list of Alarm escalation recipient ids.
If the Alarm recipient or supervisor does not confirm the Alarm within the Alarm interval, an Alarm will be sent to the next-level superior.
         * @type {Array.<string> || null}
         */
        this.AlarmEscalationRecipientIds = null;

        /**
         * Escalation interval for alarms.
         * @type {number || null}
         */
        this.AlarmEscalationInterval = null;

        /**
         * Alarm notification fatigue configuration.
         * @type {NotificationFatigue || null}
         */
        this.NotificationFatigue = null;

        /**
         * Alarm channel. valid values: 1. mail, 2. sms, 3. wechat, 4. voice, 5. wecom, 6. Http, 7. wecom group, 8. lark group, 9. dingtalk group, 10. Slack group, 11. Teams group (default: 1. mail). only select one channel.
         * @type {Array.<string> || null}
         */
        this.AlarmWays = null;

        /**
         * webhook url list for wecom group/lark group/dingtalk group/Slack group/Teams group.
         * @type {Array.<AlarmWayWebHook> || null}
         */
        this.WebHooks = null;

        /**
         * Alarm recipient type: 1. specified personnel, 2. task owner, 3. duty schedule (default: 1. specified personnel).
         * @type {number || null}
         */
        this.AlarmRecipientType = null;

        /**
         * Specifies different business ids based on AlarmRecipientType. valid values: 1 (designated personnel): Alarm recipient id list. 2 (task owner): no configuration required. 3 (duty schedule): schedule id list.
         * @type {Array.<string> || null}
         */
        this.AlarmRecipientIds = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.AlarmEscalationRecipientIds = 'AlarmEscalationRecipientIds' in params ? params.AlarmEscalationRecipientIds : null;
        this.AlarmEscalationInterval = 'AlarmEscalationInterval' in params ? params.AlarmEscalationInterval : null;

        if (params.NotificationFatigue) {
            let obj = new NotificationFatigue();
            obj.deserialize(params.NotificationFatigue)
            this.NotificationFatigue = obj;
        }
        this.AlarmWays = 'AlarmWays' in params ? params.AlarmWays : null;

        if (params.WebHooks) {
            this.WebHooks = new Array();
            for (let z in params.WebHooks) {
                let obj = new AlarmWayWebHook();
                obj.deserialize(params.WebHooks[z]);
                this.WebHooks.push(obj);
            }
        }
        this.AlarmRecipientType = 'AlarmRecipientType' in params ? params.AlarmRecipientType : null;
        this.AlarmRecipientIds = 'AlarmRecipientIds' in params ? params.AlarmRecipientIds : null;

    }
}

/**
 * Dependent task information.
 * @class
 */
class OpsTaskDepend extends  AbstractModel {
    constructor(){
        super();

        /**
         * Task ID


         * @type {string || null}
         */
        this.TaskId = null;

        /**
         * Task name.


         * @type {string || null}
         */
        this.TaskName = null;

        /**
         * Workflow id.

         * @type {string || null}
         */
        this.WorkflowId = null;

        /**
         * Workflow name.


         * @type {string || null}
         */
        this.WorkflowName = null;

        /**
         * Project ID.


         * @type {string || null}
         */
        this.ProjectId = null;

        /**
         * Project name.


         * @type {string || null}
         */
        this.ProjectName = null;

        /**
         * Task Status

-N: New

-Y: Scheduling

-F: Offline

-O: Paused

-T: Offlining

-INVALID: Invalid
         * @type {string || null}
         */
        this.Status = null;

        /**
         * Task type Id.
* 21:JDBC SQL
* 23:TDSQL-PostgreSQL
* 26:OfflineSynchronization
* 30:Python
* 31:PySpark
* 33:Impala
* 34:Hive SQL
* 35:Shell
* 36:Spark SQL
* 38:Shell Form Mode
* 39:Spark
* 40:TCHouse-P
* 41:Kettle
* 42:Tchouse-X
* 43:TCHouse-X SQL
* 46:DLC Spark
* 47:TiOne
* 48:Trino
* 50:DLC PySpark
* 92:MapReduce
* 130:Branch Node
* 131:Merged Node
* 132:Notebook
* 133:SSH
* 134:StarRocks
* 137:For-each
* 138:Setats SQL
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.TaskTypeId = null;

        /**
         * Task type description.
-20 : universal data synchronization.
 - 25 :  ETLTaskType
 - 26 :  ETLTaskType
 - 30 :  python
 - 31 :  pyspark
 - 34 :  hivesql
 - 35 :  shell
 - 36 :  sparksql
 - 21 :  jdbcsql
 - 32 :  dlc
 - 33 :  ImpalaTaskType
 - 40 :  CDWTaskType
 - 41 :  kettle
 - 42 :  TCHouse-X
 - 43 :  TCHouse-X SQL
 - 46 :  dlcsparkTaskType
 - 47 :  TiOneMachineLearningTaskType
 - 48 :  Trino
 - 50 :  DLCPyspark
 - 23 :  TencentDistributedSQL
 - 39 :  spark
 - 92 :  MRTaskType
 - 38 :  ShellScript
 - 70 :  HiveSQLScrip
-130: specifies the branch.
-131: specifies the merge.
-132: specifies the Notebook explore.
-133: specifies the SSH node.
 - 134 :  StarRocks
 - 137 :  For-each
-10000: common custom business.
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.TaskTypeDesc = null;

        /**
         * Folder name.

         * @type {string || null}
         */
        this.FolderName = null;

        /**
         * Folder ID

         * @type {string || null}
         */
        this.FolderId = null;

        /**
         * Latest submission time.

         * @type {string || null}
         */
        this.FirstSubmitTime = null;

        /**
         * First running time


         * @type {string || null}
         */
        this.FirstRunTime = null;

        /**
         * Describes the scheduling plan display description information.

         * @type {string || null}
         */
        this.ScheduleDesc = null;

        /**
         * Task Cycle Type

* ONEOFF_CYCLE: One-time

* YEAR_CYCLE: Yearly

* MONTH_CYCLE: Monthly

* WEEK_CYCLE: Weekly

* DAY_CYCLE: Daily

* HOUR_CYCLE: Hourly

* MINUTE_CYCLE: Minute-level

* CRONTAB_CYCLE: Crontab expression-based
         * @type {string || null}
         */
        this.CycleType = null;

        /**
         * Specifies the person in charge.
         * @type {string || null}
         */
        this.OwnerUin = null;

        /**
         * Execution start time. format: HH:mm, for example 00:00.

         * @type {string || null}
         */
        this.ExecutionStartTime = null;

        /**
         * Execution end time. format: HH:mm, for example 23:59.

         * @type {string || null}
         */
        this.ExecutionEndTime = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TaskId = 'TaskId' in params ? params.TaskId : null;
        this.TaskName = 'TaskName' in params ? params.TaskName : null;
        this.WorkflowId = 'WorkflowId' in params ? params.WorkflowId : null;
        this.WorkflowName = 'WorkflowName' in params ? params.WorkflowName : null;
        this.ProjectId = 'ProjectId' in params ? params.ProjectId : null;
        this.ProjectName = 'ProjectName' in params ? params.ProjectName : null;
        this.Status = 'Status' in params ? params.Status : null;
        this.TaskTypeId = 'TaskTypeId' in params ? params.TaskTypeId : null;
        this.TaskTypeDesc = 'TaskTypeDesc' in params ? params.TaskTypeDesc : null;
        this.FolderName = 'FolderName' in params ? params.FolderName : null;
        this.FolderId = 'FolderId' in params ? params.FolderId : null;
        this.FirstSubmitTime = 'FirstSubmitTime' in params ? params.FirstSubmitTime : null;
        this.FirstRunTime = 'FirstRunTime' in params ? params.FirstRunTime : null;
        this.ScheduleDesc = 'ScheduleDesc' in params ? params.ScheduleDesc : null;
        this.CycleType = 'CycleType' in params ? params.CycleType : null;
        this.OwnerUin = 'OwnerUin' in params ? params.OwnerUin : null;
        this.ExecutionStartTime = 'ExecutionStartTime' in params ? params.ExecutionStartTime : null;
        this.ExecutionEndTime = 'ExecutionEndTime' in params ? params.ExecutionEndTime : null;

    }
}

/**
 * ListDownstreamTasks request structure.
 * @class
 */
class ListDownstreamTasksRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Project ID.
         * @type {string || null}
         */
        this.ProjectId = null;

        /**
         * Task ID
         * @type {string || null}
         */
        this.TaskId = null;

        /**
         * Page number
         * @type {number || null}
         */
        this.PageNumber = null;

        /**
         * Pagination size.
         * @type {number || null}
         */
        this.PageSize = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.ProjectId = 'ProjectId' in params ? params.ProjectId : null;
        this.TaskId = 'TaskId' in params ? params.TaskId : null;
        this.PageNumber = 'PageNumber' in params ? params.PageNumber : null;
        this.PageSize = 'PageSize' in params ? params.PageSize : null;

    }
}

/**
 * Parameter passing - output parameter.
 * @class
 */
class OutTaskParameter extends  AbstractModel {
    constructor(){
        super();

        /**
         * Parameter name.

         * @type {string || null}
         */
        this.ParamKey = null;

        /**
         * Parameter definition.
         * @type {string || null}
         */
        this.ParamValue = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.ParamKey = 'ParamKey' in params ? params.ParamKey : null;
        this.ParamValue = 'ParamValue' in params ? params.ParamValue : null;

    }
}

/**
 * DeleteOpsAlarmRule request structure.
 * @class
 */
class DeleteOpsAlarmRuleRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Project ID.
         * @type {string || null}
         */
        this.ProjectId = null;

        /**
         * Alarm Rule Unique ID. Obtained from the response of the CreateAlarmRule API. Either this field or AlarmRuleName must be provided.
         * @type {string || null}
         */
        this.AlarmRuleId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.ProjectId = 'ProjectId' in params ? params.ProjectId : null;
        this.AlarmRuleId = 'AlarmRuleId' in params ? params.AlarmRuleId : null;

    }
}

/**
 * GetTaskVersion request structure.
 * @class
 */
class GetTaskVersionRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Project ID.
         * @type {string || null}
         */
        this.ProjectId = null;

        /**
         * Task ID
         * @type {string || null}
         */
        this.TaskId = null;

        /**
         * Submit version ID. If not specified, the latest submit version will be used by default.
         * @type {string || null}
         */
        this.VersionId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.ProjectId = 'ProjectId' in params ? params.ProjectId : null;
        this.TaskId = 'TaskId' in params ? params.TaskId : null;
        this.VersionId = 'VersionId' in params ? params.VersionId : null;

    }
}

/**
 * GetOpsAsyncJob response structure.
 * @class
 */
class GetOpsAsyncJobResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Asynchronous operation result.

         * @type {OpsAsyncJobDetail || null}
         */
        this.Data = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Data) {
            let obj = new OpsAsyncJobDetail();
            obj.deserialize(params.Data)
            this.Data = obj;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * CreateCodeFolder request structure.
 * @class
 */
class CreateCodeFolderRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Project ID.
         * @type {string || null}
         */
        this.ProjectId = null;

        /**
         * Folder name.
         * @type {string || null}
         */
        this.FolderName = null;

        /**
         * Parent folder path, such as /aaa/bbb/ccc. the path must start with a slash. use / for the root directory.
         * @type {string || null}
         */
        this.ParentFolderPath = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.ProjectId = 'ProjectId' in params ? params.ProjectId : null;
        this.FolderName = 'FolderName' in params ? params.FolderName : null;
        this.ParentFolderPath = 'ParentFolderPath' in params ? params.ParentFolderPath : null;

    }
}

/**
 * DeleteSQLFolder request structure.
 * @class
 */
class DeleteSQLFolderRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Folder ID
         * @type {string || null}
         */
        this.FolderId = null;

        /**
         * Project ID.
         * @type {string || null}
         */
        this.ProjectId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.FolderId = 'FolderId' in params ? params.FolderId : null;
        this.ProjectId = 'ProjectId' in params ? params.ProjectId : null;

    }
}

/**
 * DeleteCodeFile request structure.
 * @class
 */
class DeleteCodeFileRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Project ID.
         * @type {string || null}
         */
        this.ProjectId = null;

        /**
         * Code file ID. the parameter value comes from the CreateCodeFile API.
         * @type {string || null}
         */
        this.CodeFileId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.ProjectId = 'ProjectId' in params ? params.ProjectId : null;
        this.CodeFileId = 'CodeFileId' in params ? params.CodeFileId : null;

    }
}

/**
 * Dependency Task Information - Value Reference Table:

Value description table:
| Current Task Cycle Type | Upstream Task Cycle Type | Configuration Mode | MainCyclicConfig Value | Time Dimension / Instance Scope        | SubordinateCyclicConfig Value     | offset Value                         |
| ----------------------- | ------------------------ | ------------------ | ---------------------- | -------------------------------------- | --------------------------------- | ------------------------------------ |
| HOUR_CYCLE              | YEAR_CYCLE               | Recommended Policy | YEAR                   | By Year / Current Year                 | CURRENT_YEAR                      | None                                 |
| MINUTE_CYCLE            | MONTH_CYCLE              | Recommended Policy | MONTH                  | By Month / Current Month               | CURRENT_MONTH                     | None                                 |
| DAY_CYCLE               | WEEK_CYCLE               | Recommended Policy | WEEK                   | By Week / Current Week                 | CURRENT_WEEK                      | None                                 |
| DAY_CYCLE               | WEEK_CYCLE               | Recommended Policy | DAY                    | By Day / Instance of Latest Data Time  | RECENT_DATE                       | None                                 |
| HOUR_CYCLE              | HOUR_CYCLE               | Recommended Policy | HOUR                   | By Hour / Latest Instance              | CURRENT_HOUR                      | None                                 |
| HOUR_CYCLE              | HOUR_CYCLE               | Recommended Policy | HOUR                   | By Hour / Previous Cycle               | PREVIOUS_HOUR_CYCLE               | None                                 |
| HOUR_CYCLE              | DAY_CYCLE                | Recommended Policy | DAY                    | By Day / Current Day                   | CURRENT_DAY                       | None                                 |
| WEEK_CYCLE              | DAY_CYCLE                | Recommended Policy | WEEK                   | By Week / Previous Week                | PREVIOUS_WEEK                     | None                                 |
| WEEK_CYCLE              | DAY_CYCLE                | Recommended Policy | WEEK                   | By Week / Previous Friday              | PREVIOUS_FRIDAY                   | None                                 |
| WEEK_CYCLE              | DAY_CYCLE                | Recommended Policy | WEEK                   | By Week / Previous Sunday              | PREVIOUS_WEEKEND                  | None                                 |
| WEEK_CYCLE              | DAY_CYCLE                | Recommended Policy | WEEK                   | By Week / Current Week                 | CURRENT_WEEK                      | None                                 |
| WEEK_CYCLE              | DAY_CYCLE                | Recommended Policy | DAY                    | By Day / Current Day                   | CURRENT_DAY                       | None                                 |
| WEEK_CYCLE              | DAY_CYCLE                | Recommended Policy | DAY                    | By Day / Previous Day                  | PREVIOUS_DAY                      | None                                 |
| WEEK_CYCLE              | ONEOFF_CYCLE             | Recommended Policy | WEEK                   | By Week / Current Week                 | CURRENT_WEEK                      | None                                 |
| HOUR_CYCLE              | MINUTE_CYCLE             | Recommended Policy | HOUR                   | By Hour / Previous Hour (-60,0]        | PREVIOUS_HOUR_LATER_OFFSET_MINUTE | None                                 |
| HOUR_CYCLE              | MINUTE_CYCLE             | Recommended Policy | HOUR                   | By Hour / Previous Hour                | PREVIOUS_HOUR                     | None                                 |
| HOUR_CYCLE              | MINUTE_CYCLE             | Recommended Policy | HOUR                   | By Hour / Current Hour                 | CURRENT_HOUR                      | None                                 |
| YEAR_CYCLE              | WEEK_CYCLE               | Recommended Policy | YEAR                   | By Year / Current Year                 | CURRENT_YEAR                      | None                                 |
| WEEK_CYCLE              | YEAR_CYCLE               | Recommended Policy | YEAR                   | By Year / Current Year                 | CURRENT_YEAR                      | None                                 |
| MINUTE_CYCLE            | YEAR_CYCLE               | Recommended Policy | YEAR                   | By Year / Current Year                 | CURRENT_YEAR                      | None                                 |
| WEEK_CYCLE              | HOUR_CYCLE               | Recommended Policy | WEEK                   | By Week / Previous Week                | PREVIOUS_WEEK                     | None                                 |
| WEEK_CYCLE              | HOUR_CYCLE               | Recommended Policy | WEEK                   | By Week / Current Week                 | CURRENT_WEEK                      | None                                 |
| MINUTE_CYCLE            | HOUR_CYCLE               | Recommended Policy | HOUR                   | By Hour / Current Hour                 | CURRENT_HOUR                      | None                                 |
| HOUR_CYCLE              | MONTH_CYCLE              | Recommended Policy | MONTH                  | By Month / Current Month               | CURRENT_MONTH                     | None                                 |
| MONTH_CYCLE             | HOUR_CYCLE               | Recommended Policy | MONTH                  | By Month / Previous Month              | PREVIOUS_MONTH                    | None                                 |
| MONTH_CYCLE             | HOUR_CYCLE               | Recommended Policy | MONTH                  | By Month / Current Month               | CURRENT_MONTH                     | None                                 |
| MONTH_CYCLE             | ONEOFF_CYCLE             | Recommended Policy | MONTH                  | By Month / Current Month               | CURRENT_MONTH                     | None                                 |
| DAY_CYCLE               | MONTH_CYCLE              | Recommended Policy | MONTH                  | By Month / Current Month               | CURRENT_MONTH                     | None                                 |
| DAY_CYCLE               | MONTH_CYCLE              | Recommended Policy | DAY                    | By Day / Instance of Latest Data Time  | RECENT_DATE                       | None                                 |
| MONTH_CYCLE             | YEAR_CYCLE               | Recommended Policy | YEAR                   | By Year / Current Year                 | CURRENT_YEAR                      | None                                 |
| ONEOFF_CYCLE            | WEEK_CYCLE               | Recommended Policy | WEEK                   | By Week / Current Week                 | CURRENT_WEEK                      | None                                 |
| MINUTE_CYCLE            | MINUTE_CYCLE             | Recommended Policy | MINUTE                 | By Minute / Current Minute             | CURRENT_MINUTE                    | None                                 |
| MINUTE_CYCLE            | MINUTE_CYCLE             | Recommended Policy | MINUTE                 | By Minute / Previous Cycle             | PREVIOUS_MINUTE_CYCLE             | None                                 |
| YEAR_CYCLE              | MINUTE_CYCLE             | Recommended Policy | YEAR                   | By Year / Current Year                 | CURRENT_YEAR                      | None                                 |
| ONEOFF_CYCLE            | DAY_CYCLE                | Recommended Policy | DAY                    | By Day / Current Day                   | CURRENT_DAY                       | None                                 |
| DAY_CYCLE               | MINUTE_CYCLE             | Recommended Policy | DAY                    | By Day / Previous Day (-24 * 60,0]     | PREVIOUS_DAY_LATER_OFFSET_MINUTE  | None                                 |
| DAY_CYCLE               | MINUTE_CYCLE             | Recommended Policy | DAY                    | By Day / Previous Day                  | PREVIOUS_DAY                      | None                                 |
| DAY_CYCLE               | MINUTE_CYCLE             | Recommended Policy | DAY                    | By Day / Current Day                   | CURRENT_DAY                       | None                                 |
| MINUTE_CYCLE            | DAY_CYCLE                | Recommended Policy | DAY                    | By Day / Current Day                   | CURRENT_DAY                       | None                                 |
| WEEK_CYCLE              | WEEK_CYCLE               | Recommended Policy | WEEK                   | By Week / Current Week                 | CURRENT_WEEK                      | None                                 |
| WEEK_CYCLE              | WEEK_CYCLE               | Recommended Policy | DAY                    | By Day / Instance of Latest Data Time  | RECENT_DATE                       | None                                 |
| YEAR_CYCLE              | YEAR_CYCLE               | Recommended Policy | DAY                    | By Day / Instance of Latest Data Time  | RECENT_DATE                       | None                                 |
| YEAR_CYCLE              | YEAR_CYCLE               | Recommended Policy | YEAR                   | By Year / Current Year                 | CURRENT_YEAR                      | None                                 |
| YEAR_CYCLE              | HOUR_CYCLE               | Recommended Policy | YEAR                   | By Year / Current Year                 | CURRENT_YEAR                      | None                                 |
| MINUTE_CYCLE            | WEEK_CYCLE               | Recommended Policy | WEEK                   | By Week / Current Week                 | CURRENT_WEEK                      | None                                 |
| ONEOFF_CYCLE            | MINUTE_CYCLE             | Recommended Policy | DAY                    | By Day / Current Day                   | CURRENT_DAY                       | None                                 |
| HOUR_CYCLE              | ONEOFF_CYCLE             | Recommended Policy | DAY                    | By Day / Current Day                   | CURRENT_DAY                       | None                                 |
| WEEK_CYCLE              | MINUTE_CYCLE             | Recommended Policy | WEEK                   | By Week / Previous Week                | PREVIOUS_WEEK                     | None                                 |
| WEEK_CYCLE              | MINUTE_CYCLE             | Recommended Policy | WEEK                   | By Week / Current Week                 | CURRENT_WEEK                      | None                                 |
| DAY_CYCLE               | HOUR_CYCLE               | Recommended Policy | DAY                    | By Day / Previous Day (-24,0]          | PREVIOUS_DAY_LATER_OFFSET_HOUR    | None                                 |
| DAY_CYCLE               | HOUR_CYCLE               | Recommended Policy | DAY                    | By Day / Previous Day [-24,0)          | PREVIOUS_DAY                      | None                                 |
| DAY_CYCLE               | HOUR_CYCLE               | Recommended Policy | DAY                    | By Day / Current Day                   | CURRENT_DAY                       | None                                 |
| YEAR_CYCLE              | MONTH_CYCLE              | Recommended Policy | DAY                    | By Day / Instance of Latest Data Time  | RECENT_DATE                       | None                                 |
| YEAR_CYCLE              | MONTH_CYCLE              | Recommended Policy | MONTH                  | By Month / All Months of Current Year  | ALL_MONTH_OF_YEAR                 | None                                 |
| YEAR_CYCLE              | MONTH_CYCLE              | Recommended Policy | MONTH                  | By Month / Current Month               | CURRENT_MONTH                     | None                                 |
| YEAR_CYCLE              | MONTH_CYCLE              | Recommended Policy | MONTH                  | By Month / Previous Month              | PREVIOUS_MONTH                    | None                                 |
| YEAR_CYCLE              | MONTH_CYCLE              | Recommended Policy | MONTH                  | By Month / End of Previous Month       | PREVIOUS_END_OF_MONTH             | None                                 |
| YEAR_CYCLE              | MONTH_CYCLE              | Recommended Policy | MONTH                  | By Month / Beginning of Previous Month | PREVIOUS_BEGIN_OF_MONTH           | None                                 |
| ONEOFF_CYCLE            | YEAR_CYCLE               | Recommended Policy | YEAR                   | By Year / Current Year                 | CURRENT_YEAR                      | None                                 |
| DAY_CYCLE               | DAY_CYCLE                | Recommended Policy | DAY                    | By Day / Current Day                   | CURRENT_DAY                       | None                                 |
| ONEOFF_CYCLE            | HOUR_CYCLE               | Recommended Policy | DAY                    | By Day / Current Day                   | CURRENT_DAY                       | None                                 |
| DAY_CYCLE               | ONEOFF_CYCLE             | Recommended Policy | DAY                    | By Day / Current Day                   | CURRENT_DAY                       | None                                 |
| MINUTE_CYCLE            | ONEOFF_CYCLE             | Recommended Policy | DAY                    | By Day / Current Day                   | CURRENT_DAY                       | None                                 |
| WEEK_CYCLE              | MONTH_CYCLE              | Recommended Policy | MONTH                  | By Month / Current Month               | CURRENT_MONTH                     | None                                 |
| WEEK_CYCLE              | MONTH_CYCLE              | Recommended Policy | DAY                    | By Day / Instance of Latest Data Time  | RECENT_DATE                       | None                                 |
| YEAR_CYCLE              | ONEOFF_CYCLE             | Recommended Policy | YEAR                   | By Year / Current Year                 | CURRENT_YEAR                      | None                                 |
| MONTH_CYCLE             | DAY_CYCLE                | Recommended Policy | MONTH                  | By Month / Previous Month              | PREVIOUS_MONTH                    | None                                 |
| MONTH_CYCLE             | DAY_CYCLE                | Recommended Policy | MONTH                  | By Month / End of Previous Month       | PREVIOUS_END_OF_MONTH             | None                                 |
| MONTH_CYCLE             | DAY_CYCLE                | Recommended Policy | MONTH                  | By Month / Current Month               | CURRENT_MONTH                     | None                                 |
| MONTH_CYCLE             | DAY_CYCLE                | Recommended Policy | DAY                    | By Day / Current Day                   | CURRENT_DAY                       | None                                 |
| MONTH_CYCLE             | DAY_CYCLE                | Recommended Policy | DAY                    | By Day / Previous Day                  | PREVIOUS_DAY                      | None                                 |
| YEAR_CYCLE              | DAY_CYCLE                | Recommended Policy | DAY                    | By Day / All Days of Current Year      | ALL_DAY_OF_YEAR                   | None                                 |
| YEAR_CYCLE              | DAY_CYCLE                | Recommended Policy | DAY                    | By Day / Current Day                   | CURRENT_DAY                       | None                                 |
| YEAR_CYCLE              | DAY_CYCLE                | Recommended Policy | DAY                    | By Day / Previous Day                  | PREVIOUS_DAY                      | None                                 |
| HOUR_CYCLE              | WEEK_CYCLE               | Recommended Policy | WEEK                   | By Week / Current Week                 | CURRENT_WEEK                      | None                                 |
| MONTH_CYCLE             | MONTH_CYCLE              | Recommended Policy | MONTH                  | By Month / Current Month               | CURRENT_MONTH                     | None                                 |
| MONTH_CYCLE             | MONTH_CYCLE              | Recommended Policy | DAY                    | By Day / Instance of Latest Data Time  | RECENT_DATE                       | None                                 |
| MONTH_CYCLE             | MINUTE_CYCLE             | Recommended Policy | MONTH                  | By Month / Previous Month              | PREVIOUS_MONTH                    | None                                 |
| MONTH_CYCLE             | MINUTE_CYCLE             | Recommended Policy | MONTH                  | By Month / Current Month               | CURRENT_MONTH                     | None                                 |
| MONTH_CYCLE             | WEEK_CYCLE               | Recommended Policy | MONTH                  | By Month / Previous Month              | PREVIOUS_MONTH                    | None                                 |
| MONTH_CYCLE             | WEEK_CYCLE               | Recommended Policy | MONTH                  | By Month / Current Month               | CURRENT_MONTH                     | None                                 |
| MONTH_CYCLE             | WEEK_CYCLE               | Recommended Policy | DAY                    | By Day / Instance of Latest Data Time  | RECENT_DATE                       | None                                 |
| DAY_CYCLE               | YEAR_CYCLE               | Recommended Policy | YEAR                   | By Year / Current Year                 | CURRENT_YEAR                      | None                                 |
| DAY_CYCLE               | YEAR_CYCLE               | Recommended Policy | DAY                    | By Day / Instance of Latest Data Time  | RECENT_DATE                       | None                                 |
| ONEOFF_CYCLE            | ONEOFF_CYCLE             | Recommended Policy | DAY                    | By Day / Current Day                   | CURRENT_DAY                       | None                                 |
| ONEOFF_CYCLE            | MONTH_CYCLE              | Recommended Policy | MONTH                  | By Month / Current Month               | CURRENT_MONTH                     | None                                 |
| CRONTAB_CYCLE           | CRONTAB_CYCLE            | Recommended Policy | CRONTAB                | None                                   | CURRENT                           | None                                 |
| HOUR_CYCLE              | HOUR_CYCLE               | Custom             | RANGE_HOUR             | Range (hours)                          | None                              | Comma-separated integers, e.g., -1,0 |
| HOUR_CYCLE              | DAY_CYCLE                | Custom             | RANGE_DAY              | Range (days)                           | None                              | Comma-separated integers, e.g., -1,0 |
| WEEK_CYCLE              | DAY_CYCLE                | Custom             | RANGE_DAY              | Range (days)                           | None                              | Comma-separated integers, e.g., -1,0 |
| HOUR_CYCLE              | MINUTE_CYCLE             | Custom             | RANGE_MINUTE           | Range (minutes)                        | None                              | Comma-separated integers, e.g., -1,0 |
| WEEK_CYCLE              | HOUR_CYCLE               | Custom             | RANGE_HOUR             | Range (hours)                          | None                              | Comma-separated integers, e.g., -1,0 |
| MINUTE_CYCLE            | HOUR_CYCLE               | Custom             | RANGE_HOUR             | Range (hours)                          | None                              | Comma-separated integers, e.g., -1,0 |
| MONTH_CYCLE             | HOUR_CYCLE               | Custom             | RANGE_HOUR             | Range (hours)                          | None                              | Comma-separated integers, e.g., -1,0 |
| MINUTE_CYCLE            | MINUTE_CYCLE             | Custom             | RANGE_MINUTE           | Range (minutes)                        | None                              | Comma-separated integers, e.g., -1,0 |
| YEAR_CYCLE              | MINUTE_CYCLE             | Custom             | RANGE_MINUTE           | Range (minutes)                        | None                              | Comma-separated integers, e.g., -1,0 |
| DAY_CYCLE               | MINUTE_CYCLE             | Custom             | RANGE_MINUTE           | Range (minutes)                        | None                              | Comma-separated integers, e.g., -1,0 |
| MINUTE_CYCLE            | DAY_CYCLE                | Custom             | RANGE_DAY              | Range (days)                           | None                              | Comma-separated integers, e.g., -1,0 |
| YEAR_CYCLE              | HOUR_CYCLE               | Custom             | RANGE_HOUR             | Range (hours)                          | None                              | Comma-separated integers, e.g., -1,0 |
| WEEK_CYCLE              | MINUTE_CYCLE             | Custom             | RANGE_MINUTE           | Range (minutes)                        | None                              | Comma-separated integers, e.g., -1,0 |
| DAY_CYCLE               | HOUR_CYCLE               | Custom             | RANGE_HOUR             | Range (hours)                          | None                              | Comma-separated integers, e.g., -1,0 |
| DAY_CYCLE               | DAY_CYCLE                | Custom             | RANGE_DAY              | Range (days)                           | None                              | Comma-separated integers, e.g., -1,0 |
| MONTH_CYCLE             | DAY_CYCLE                | Custom             | RANGE_DAY              | Range (days)                           | None                              | Comma-separated integers, e.g., -1,0 |
| YEAR_CYCLE              | DAY_CYCLE                | Custom             | RANGE_DAY              | Range (days)                           | None                              | Comma-separated integers, e.g., -1,0 |
| MONTH_CYCLE             | MINUTE_CYCLE             | Custom             | RANGE_MINUTE           | Range (minutes)                        | None                              | Comma-separated integers, e.g., -1,0 |
| HOUR_CYCLE              | HOUR_CYCLE               | Custom             | LIST_HOUR              | List (hours)                           | None                              | Comma-separated integers, e.g., -1,0 |
| HOUR_CYCLE              | DAY_CYCLE                | Custom             | LIST_DAY               | List (days)                            | None                              | Comma-separated integers, e.g., -1,0 |
| WEEK_CYCLE              | DAY_CYCLE                | Custom             | LIST_DAY               | List (days)                            | None                              | Comma-separated integers, e.g., -1,0 |
| HOUR_CYCLE              | MINUTE_CYCLE             | Custom             | LIST_MINUTE            | List (minutes)                         | None                              | Comma-separated integers, e.g., -1,0 |
| WEEK_CYCLE              | HOUR_CYCLE               | Custom             | LIST_HOUR              | List (hours)                           | None                              | Comma-separated integers, e.g., -1,0 |
| MINUTE_CYCLE            | HOUR_CYCLE               | Custom             | LIST_HOUR              | List (hours)                           | None                              | Comma-separated integers, e.g., -1,0 |
| MONTH_CYCLE             | HOUR_CYCLE               | Custom             | LIST_HOUR              | List (hours)                           | None                              | Comma-separated integers, e.g., -1,0 |
| MINUTE_CYCLE            | MINUTE_CYCLE             | Custom             | LIST_MINUTE            | List (minutes)                         | None                              | Comma-separated integers, e.g., -1,0 |
| YEAR_CYCLE              | MINUTE_CYCLE             | Custom             | LIST_MINUTE            | List (minutes)                         | None                              | Comma-separated integers, e.g., -1,0 |
| DAY_CYCLE               | MINUTE_CYCLE             | Custom             | LIST_MINUTE            | List (minutes)                         | None                              | Comma-separated integers, e.g., -1,0 |
| MINUTE_CYCLE            | DAY_CYCLE                | Custom             | LIST_DAY               | List (days)                            | None                              | Comma-separated integers, e.g., -1,0 |
| YEAR_CYCLE              | HOUR_CYCLE               | Custom             | LIST_HOUR              | List (hours)                           | None                              | Comma-separated integers, e.g., -1,0 |
| WEEK_CYCLE              | MINUTE_CYCLE             | Custom             | LIST_MINUTE            | List (minutes)                         | None                              | Comma-separated integers, e.g., -1,0 |
| DAY_CYCLE               | HOUR_CYCLE               | Custom             | LIST_HOUR              | List (hours)                           | None                              | Comma-separated integers, e.g., -1,0 |
| DAY_CYCLE               | DAY_CYCLE                | Custom             | LIST_DAY               | List (days)                            | None                              | Comma-separated integers, e.g., -1,0 |
| MONTH_CYCLE             | DAY_CYCLE                | Custom             | LIST_DAY               | List (days)                            | None                              | Comma-separated integers, e.g., -1,0 |
| YEAR_CYCLE              | DAY_CYCLE                | Custom             | LIST_DAY               | List (days)                            | None                              | Comma-separated integers, e.g., -1,0 |
| MONTH_CYCLE             | MINUTE_CYCLE             | Custom             | LIST_MINUTE            | List (minutes)                         | None                              | Comma-separated integers, e.g., -1,0 |
 * @class
 */
class DependencyTaskBrief extends  AbstractModel {
    constructor(){
        super();

        /**
         * Task ID

         * @type {string || null}
         */
        this.TaskId = null;

        /**
         * Main dependency configuration. Valid values:

* CRONTAB
* DAY
* HOUR
* LIST_DAY
* LIST_HOUR
* LIST_MINUTE
* MINUTE
* MONTH
* RANGE_DAY
* RANGE_HOUR
* RANGE_MINUTE
* WEEK
* YEAR
         * @type {string || null}
         */
        this.MainCyclicConfig = null;

        /**
         * Configures secondary dependencies.  Valid values:
* ALL_DAY_OF_YEAR
* ALL_MONTH_OF_YEAR
* CURRENT
* CURRENT_DAY
* CURRENT_HOUR
* CURRENT_MINUTE
* CURRENT_MONTH
* CURRENT_WEEK
* CURRENT_YEAR
* PREVIOUS_BEGIN_OF_MONTH
* PREVIOUS_DAY
* PREVIOUS_DAY_LATER_OFFSET_HOUR
* PREVIOUS_DAY_LATER_OFFSET_MINUTE
* PREVIOUS_END_OF_MONTH
* PREVIOUS_FRIDAY
* PREVIOUS_HOUR
* PREVIOUS_HOUR_CYCLE
* PREVIOUS_HOUR_LATER_OFFSET_MINUTE
* PREVIOUS_MINUTE_CYCLE
* PREVIOUS_MONTH
* PREVIOUS_WEEK
* PREVIOUS_WEEKEND
* RECENT_DATE
         * @type {string || null}
         */
        this.SubordinateCyclicConfig = null;

        /**
         * Offset in Range/List Mode
         * @type {string || null}
         */
        this.Offset = null;

        /**
         * Dependency Execution Policy
         * @type {DependencyStrategyTask || null}
         */
        this.DependencyStrategy = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TaskId = 'TaskId' in params ? params.TaskId : null;
        this.MainCyclicConfig = 'MainCyclicConfig' in params ? params.MainCyclicConfig : null;
        this.SubordinateCyclicConfig = 'SubordinateCyclicConfig' in params ? params.SubordinateCyclicConfig : null;
        this.Offset = 'Offset' in params ? params.Offset : null;

        if (params.DependencyStrategy) {
            let obj = new DependencyStrategyTask();
            obj.deserialize(params.DependencyStrategy)
            this.DependencyStrategy = obj;
        }

    }
}

/**
 * Describes the workflow details.
 * @class
 */
class WorkflowDetail extends  AbstractModel {
    constructor(){
        super();

        /**
         * Workflow name.

         * @type {string || null}
         */
        this.WorkflowName = null;

        /**
         * Owner ID.
         * @type {string || null}
         */
        this.OwnerUin = null;

        /**
         * Creator ID.
         * @type {string || null}
         */
        this.CreateUserUin = null;

        /**
         * Workflow type. Valid values: cycle or manual.

         * @type {string || null}
         */
        this.WorkflowType = null;

        /**
         * Workflow parameter array.
         * @type {Array.<ParamInfo> || null}
         */
        this.WorkflowParams = null;

        /**
         * Unified scheduling parameter.
.
         * @type {WorkflowSchedulerConfiguration || null}
         */
        this.WorkflowSchedulerConfiguration = null;

        /**
         * Workflow description.

         * @type {string || null}
         */
        this.WorkflowDesc = null;

        /**
         * Workflow path.
         * @type {string || null}
         */
        this.Path = null;

        /**
         * BundleId item.
         * @type {string || null}
         */
        this.BundleId = null;

        /**
         * BundleInfo item. specifies the bundle information.

         * @type {string || null}
         */
        this.BundleInfo = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.WorkflowName = 'WorkflowName' in params ? params.WorkflowName : null;
        this.OwnerUin = 'OwnerUin' in params ? params.OwnerUin : null;
        this.CreateUserUin = 'CreateUserUin' in params ? params.CreateUserUin : null;
        this.WorkflowType = 'WorkflowType' in params ? params.WorkflowType : null;

        if (params.WorkflowParams) {
            this.WorkflowParams = new Array();
            for (let z in params.WorkflowParams) {
                let obj = new ParamInfo();
                obj.deserialize(params.WorkflowParams[z]);
                this.WorkflowParams.push(obj);
            }
        }

        if (params.WorkflowSchedulerConfiguration) {
            let obj = new WorkflowSchedulerConfiguration();
            obj.deserialize(params.WorkflowSchedulerConfiguration)
            this.WorkflowSchedulerConfiguration = obj;
        }
        this.WorkflowDesc = 'WorkflowDesc' in params ? params.WorkflowDesc : null;
        this.Path = 'Path' in params ? params.Path : null;
        this.BundleId = 'BundleId' in params ? params.BundleId : null;
        this.BundleInfo = 'BundleInfo' in params ? params.BundleInfo : null;

    }
}

/**
 * UpdateCodeFolder request structure.
 * @class
 */
class UpdateCodeFolderRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Project ID.
         * @type {string || null}
         */
        this.ProjectId = null;

        /**
         * Folder ID. The parameter value can be obtained from the response of the CreateCodeFolder API.
         * @type {string || null}
         */
        this.FolderId = null;

        /**
         * Folder name.
         * @type {string || null}
         */
        this.FolderName = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.ProjectId = 'ProjectId' in params ? params.ProjectId : null;
        this.FolderId = 'FolderId' in params ? params.FolderId : null;
        this.FolderName = 'FolderName' in params ? params.FolderName : null;

    }
}

/**
 * Resource file pagination.
 * @class
 */
class ResourceFilePage extends  AbstractModel {
    constructor(){
        super();

        /**
         * Task collection information.
         * @type {Array.<ResourceFileItem> || null}
         */
        this.Items = null;

        /**
         * Total page number
         * @type {number || null}
         */
        this.TotalPageNumber = null;

        /**
         * Total file count.
         * @type {number || null}
         */
        this.TotalCount = null;

        /**
         * Current Page number

         * @type {number || null}
         */
        this.PageNumber = null;

        /**
         * Items per Page
         * @type {number || null}
         */
        this.PageSize = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Items) {
            this.Items = new Array();
            for (let z in params.Items) {
                let obj = new ResourceFileItem();
                obj.deserialize(params.Items[z]);
                this.Items.push(obj);
            }
        }
        this.TotalPageNumber = 'TotalPageNumber' in params ? params.TotalPageNumber : null;
        this.TotalCount = 'TotalCount' in params ? params.TotalCount : null;
        this.PageNumber = 'PageNumber' in params ? params.PageNumber : null;
        this.PageSize = 'PageSize' in params ? params.PageSize : null;

    }
}

/**
 * Workflow Unified Scheduling Parameter Input - Dependency Task Value Reference:

Value description table:
| Current Task Cycle Type | Upstream Task Cycle Type | Configuration Mode | MainCyclicConfig Value | Time Dimension / Instance Scope        | SubordinateCyclicConfig Value     | offset Value                         |
| ----------------------- | ------------------------ | ------------------ | ---------------------- | -------------------------------------- | --------------------------------- | ------------------------------------ |
| HOUR_CYCLE              | YEAR_CYCLE               | Recommended Policy | YEAR                   | By Year / Current Year                 | CURRENT_YEAR                      | None                                 |
| MINUTE_CYCLE            | MONTH_CYCLE              | Recommended Policy | MONTH                  | By Month / Current Month               | CURRENT_MONTH                     | None                                 |
| DAY_CYCLE               | WEEK_CYCLE               | Recommended Policy | WEEK                   | By Week / Current Week                 | CURRENT_WEEK                      | None                                 |
| DAY_CYCLE               | WEEK_CYCLE               | Recommended Policy | DAY                    | By Day / Instance of Latest Data Time  | RECENT_DATE                       | None                                 |
| HOUR_CYCLE              | HOUR_CYCLE               | Recommended Policy | HOUR                   | By Hour / Latest Instance              | CURRENT_HOUR                      | None                                 |
| HOUR_CYCLE              | HOUR_CYCLE               | Recommended Policy | HOUR                   | By Hour / Previous Cycle               | PREVIOUS_HOUR_CYCLE               | None                                 |
| HOUR_CYCLE              | DAY_CYCLE                | Recommended Policy | DAY                    | By Day / Current Day                   | CURRENT_DAY                       | None                                 |
| WEEK_CYCLE              | DAY_CYCLE                | Recommended Policy | WEEK                   | By Week / Previous Week                | PREVIOUS_WEEK                     | None                                 |
| WEEK_CYCLE              | DAY_CYCLE                | Recommended Policy | WEEK                   | By Week / Previous Friday              | PREVIOUS_FRIDAY                   | None                                 |
| WEEK_CYCLE              | DAY_CYCLE                | Recommended Policy | WEEK                   | By Week / Previous Sunday              | PREVIOUS_WEEKEND                  | None                                 |
| WEEK_CYCLE              | DAY_CYCLE                | Recommended Policy | WEEK                   | By Week / Current Week                 | CURRENT_WEEK                      | None                                 |
| WEEK_CYCLE              | DAY_CYCLE                | Recommended Policy | DAY                    | By Day / Current Day                   | CURRENT_DAY                       | None                                 |
| WEEK_CYCLE              | DAY_CYCLE                | Recommended Policy | DAY                    | By Day / Previous Day                  | PREVIOUS_DAY                      | None                                 |
| WEEK_CYCLE              | ONEOFF_CYCLE             | Recommended Policy | WEEK                   | By Week / Current Week                 | CURRENT_WEEK                      | None                                 |
| HOUR_CYCLE              | MINUTE_CYCLE             | Recommended Policy | HOUR                   | By Hour / Previous Hour (-60,0]        | PREVIOUS_HOUR_LATER_OFFSET_MINUTE | None                                 |
| HOUR_CYCLE              | MINUTE_CYCLE             | Recommended Policy | HOUR                   | By Hour / Previous Hour                | PREVIOUS_HOUR                     | None                                 |
| HOUR_CYCLE              | MINUTE_CYCLE             | Recommended Policy | HOUR                   | By Hour / Current Hour                 | CURRENT_HOUR                      | None                                 |
| YEAR_CYCLE              | WEEK_CYCLE               | Recommended Policy | YEAR                   | By Year / Current Year                 | CURRENT_YEAR                      | None                                 |
| WEEK_CYCLE              | YEAR_CYCLE               | Recommended Policy | YEAR                   | By Year / Current Year                 | CURRENT_YEAR                      | None                                 |
| MINUTE_CYCLE            | YEAR_CYCLE               | Recommended Policy | YEAR                   | By Year / Current Year                 | CURRENT_YEAR                      | None                                 |
| WEEK_CYCLE              | HOUR_CYCLE               | Recommended Policy | WEEK                   | By Week / Previous Week                | PREVIOUS_WEEK                     | None                                 |
| WEEK_CYCLE              | HOUR_CYCLE               | Recommended Policy | WEEK                   | By Week / Current Week                 | CURRENT_WEEK                      | None                                 |
| MINUTE_CYCLE            | HOUR_CYCLE               | Recommended Policy | HOUR                   | By Hour / Current Hour                 | CURRENT_HOUR                      | None                                 |
| HOUR_CYCLE              | MONTH_CYCLE              | Recommended Policy | MONTH                  | By Month / Current Month               | CURRENT_MONTH                     | None                                 |
| MONTH_CYCLE             | HOUR_CYCLE               | Recommended Policy | MONTH                  | By Month / Previous Month              | PREVIOUS_MONTH                    | None                                 |
| MONTH_CYCLE             | HOUR_CYCLE               | Recommended Policy | MONTH                  | By Month / Current Month               | CURRENT_MONTH                     | None                                 |
| MONTH_CYCLE             | ONEOFF_CYCLE             | Recommended Policy | MONTH                  | By Month / Current Month               | CURRENT_MONTH                     | None                                 |
| DAY_CYCLE               | MONTH_CYCLE              | Recommended Policy | MONTH                  | By Month / Current Month               | CURRENT_MONTH                     | None                                 |
| DAY_CYCLE               | MONTH_CYCLE              | Recommended Policy | DAY                    | By Day / Instance of Latest Data Time  | RECENT_DATE                       | None                                 |
| MONTH_CYCLE             | YEAR_CYCLE               | Recommended Policy | YEAR                   | By Year / Current Year                 | CURRENT_YEAR                      | None                                 |
| ONEOFF_CYCLE            | WEEK_CYCLE               | Recommended Policy | WEEK                   | By Week / Current Week                 | CURRENT_WEEK                      | None                                 |
| MINUTE_CYCLE            | MINUTE_CYCLE             | Recommended Policy | MINUTE                 | By Minute / Current Minute             | CURRENT_MINUTE                    | None                                 |
| MINUTE_CYCLE            | MINUTE_CYCLE             | Recommended Policy | MINUTE                 | By Minute / Previous Cycle             | PREVIOUS_MINUTE_CYCLE             | None                                 |
| YEAR_CYCLE              | MINUTE_CYCLE             | Recommended Policy | YEAR                   | By Year / Current Year                 | CURRENT_YEAR                      | None                                 |
| ONEOFF_CYCLE            | DAY_CYCLE                | Recommended Policy | DAY                    | By Day / Current Day                   | CURRENT_DAY                       | None                                 |
| DAY_CYCLE               | MINUTE_CYCLE             | Recommended Policy | DAY                    | By Day / Previous Day (-24 * 60,0]     | PREVIOUS_DAY_LATER_OFFSET_MINUTE  | None                                 |
| DAY_CYCLE               | MINUTE_CYCLE             | Recommended Policy | DAY                    | By Day / Previous Day                  | PREVIOUS_DAY                      | None                                 |
| DAY_CYCLE               | MINUTE_CYCLE             | Recommended Policy | DAY                    | By Day / Current Day                   | CURRENT_DAY                       | None                                 |
| MINUTE_CYCLE            | DAY_CYCLE                | Recommended Policy | DAY                    | By Day / Current Day                   | CURRENT_DAY                       | None                                 |
| WEEK_CYCLE              | WEEK_CYCLE               | Recommended Policy | WEEK                   | By Week / Current Week                 | CURRENT_WEEK                      | None                                 |
| WEEK_CYCLE              | WEEK_CYCLE               | Recommended Policy | DAY                    | By Day / Instance of Latest Data Time  | RECENT_DATE                       | None                                 |
| YEAR_CYCLE              | YEAR_CYCLE               | Recommended Policy | DAY                    | By Day / Instance of Latest Data Time  | RECENT_DATE                       | None                                 |
| YEAR_CYCLE              | YEAR_CYCLE               | Recommended Policy | YEAR                   | By Year / Current Year                 | CURRENT_YEAR                      | None                                 |
| YEAR_CYCLE              | HOUR_CYCLE               | Recommended Policy | YEAR                   | By Year / Current Year                 | CURRENT_YEAR                      | None                                 |
| MINUTE_CYCLE            | WEEK_CYCLE               | Recommended Policy | WEEK                   | By Week / Current Week                 | CURRENT_WEEK                      | None                                 |
| ONEOFF_CYCLE            | MINUTE_CYCLE             | Recommended Policy | DAY                    | By Day / Current Day                   | CURRENT_DAY                       | None                                 |
| HOUR_CYCLE              | ONEOFF_CYCLE             | Recommended Policy | DAY                    | By Day / Current Day                   | CURRENT_DAY                       | None                                 |
| WEEK_CYCLE              | MINUTE_CYCLE             | Recommended Policy | WEEK                   | By Week / Previous Week                | PREVIOUS_WEEK                     | None                                 |
| WEEK_CYCLE              | MINUTE_CYCLE             | Recommended Policy | WEEK                   | By Week / Current Week                 | CURRENT_WEEK                      | None                                 |
| DAY_CYCLE               | HOUR_CYCLE               | Recommended Policy | DAY                    | By Day / Previous Day (-24,0]          | PREVIOUS_DAY_LATER_OFFSET_HOUR    | None                                 |
| DAY_CYCLE               | HOUR_CYCLE               | Recommended Policy | DAY                    | By Day / Previous Day [-24,0)          | PREVIOUS_DAY                      | None                                 |
| DAY_CYCLE               | HOUR_CYCLE               | Recommended Policy | DAY                    | By Day / Current Day                   | CURRENT_DAY                       | None                                 |
| YEAR_CYCLE              | MONTH_CYCLE              | Recommended Policy | DAY                    | By Day / Instance of Latest Data Time  | RECENT_DATE                       | None                                 |
| YEAR_CYCLE              | MONTH_CYCLE              | Recommended Policy | MONTH                  | By Month / All Months of Current Year  | ALL_MONTH_OF_YEAR                 | None                                 |
| YEAR_CYCLE              | MONTH_CYCLE              | Recommended Policy | MONTH                  | By Month / Current Month               | CURRENT_MONTH                     | None                                 |
| YEAR_CYCLE              | MONTH_CYCLE              | Recommended Policy | MONTH                  | By Month / Previous Month              | PREVIOUS_MONTH                    | None                                 |
| YEAR_CYCLE              | MONTH_CYCLE              | Recommended Policy | MONTH                  | By Month / End of Previous Month       | PREVIOUS_END_OF_MONTH             | None                                 |
| YEAR_CYCLE              | MONTH_CYCLE              | Recommended Policy | MONTH                  | By Month / Beginning of Previous Month | PREVIOUS_BEGIN_OF_MONTH           | None                                 |
| ONEOFF_CYCLE            | YEAR_CYCLE               | Recommended Policy | YEAR                   | By Year / Current Year                 | CURRENT_YEAR                      | None                                 |
| DAY_CYCLE               | DAY_CYCLE                | Recommended Policy | DAY                    | By Day / Current Day                   | CURRENT_DAY                       | None                                 |
| ONEOFF_CYCLE            | HOUR_CYCLE               | Recommended Policy | DAY                    | By Day / Current Day                   | CURRENT_DAY                       | None                                 |
| DAY_CYCLE               | ONEOFF_CYCLE             | Recommended Policy | DAY                    | By Day / Current Day                   | CURRENT_DAY                       | None                                 |
| MINUTE_CYCLE            | ONEOFF_CYCLE             | Recommended Policy | DAY                    | By Day / Current Day                   | CURRENT_DAY                       | None                                 |
| WEEK_CYCLE              | MONTH_CYCLE              | Recommended Policy | MONTH                  | By Month / Current Month               | CURRENT_MONTH                     | None                                 |
| WEEK_CYCLE              | MONTH_CYCLE              | Recommended Policy | DAY                    | By Day / Instance of Latest Data Time  | RECENT_DATE                       | None                                 |
| YEAR_CYCLE              | ONEOFF_CYCLE             | Recommended Policy | YEAR                   | By Year / Current Year                 | CURRENT_YEAR                      | None                                 |
| MONTH_CYCLE             | DAY_CYCLE                | Recommended Policy | MONTH                  | By Month / Previous Month              | PREVIOUS_MONTH                    | None                                 |
| MONTH_CYCLE             | DAY_CYCLE                | Recommended Policy | MONTH                  | By Month / End of Previous Month       | PREVIOUS_END_OF_MONTH             | None                                 |
| MONTH_CYCLE             | DAY_CYCLE                | Recommended Policy | MONTH                  | By Month / Current Month               | CURRENT_MONTH                     | None                                 |
| MONTH_CYCLE             | DAY_CYCLE                | Recommended Policy | DAY                    | By Day / Current Day                   | CURRENT_DAY                       | None                                 |
| MONTH_CYCLE             | DAY_CYCLE                | Recommended Policy | DAY                    | By Day / Previous Day                  | PREVIOUS_DAY                      | None                                 |
| YEAR_CYCLE              | DAY_CYCLE                | Recommended Policy | DAY                    | By Day / All Days of Current Year      | ALL_DAY_OF_YEAR                   | None                                 |
| YEAR_CYCLE              | DAY_CYCLE                | Recommended Policy | DAY                    | By Day / Current Day                   | CURRENT_DAY                       | None                                 |
| YEAR_CYCLE              | DAY_CYCLE                | Recommended Policy | DAY                    | By Day / Previous Day                  | PREVIOUS_DAY                      | None                                 |
| HOUR_CYCLE              | WEEK_CYCLE               | Recommended Policy | WEEK                   | By Week / Current Week                 | CURRENT_WEEK                      | None                                 |
| MONTH_CYCLE             | MONTH_CYCLE              | Recommended Policy | MONTH                  | By Month / Current Month               | CURRENT_MONTH                     | None                                 |
| MONTH_CYCLE             | MONTH_CYCLE              | Recommended Policy | DAY                    | By Day / Instance of Latest Data Time  | RECENT_DATE                       | None                                 |
| MONTH_CYCLE             | MINUTE_CYCLE             | Recommended Policy | MONTH                  | By Month / Previous Month              | PREVIOUS_MONTH                    | None                                 |
| MONTH_CYCLE             | MINUTE_CYCLE             | Recommended Policy | MONTH                  | By Month / Current Month               | CURRENT_MONTH                     | None                                 |
| MONTH_CYCLE             | WEEK_CYCLE               | Recommended Policy | MONTH                  | By Month / Previous Month              | PREVIOUS_MONTH                    | None                                 |
| MONTH_CYCLE             | WEEK_CYCLE               | Recommended Policy | MONTH                  | By Month / Current Month               | CURRENT_MONTH                     | None                                 |
| MONTH_CYCLE             | WEEK_CYCLE               | Recommended Policy | DAY                    | By Day / Instance of Latest Data Time  | RECENT_DATE                       | None                                 |
| DAY_CYCLE               | YEAR_CYCLE               | Recommended Policy | YEAR                   | By Year / Current Year                 | CURRENT_YEAR                      | None                                 |
| DAY_CYCLE               | YEAR_CYCLE               | Recommended Policy | DAY                    | By Day / Instance of Latest Data Time  | RECENT_DATE                       | None                                 |
| ONEOFF_CYCLE            | ONEOFF_CYCLE             | Recommended Policy | DAY                    | By Day / Current Day                   | CURRENT_DAY                       | None                                 |
| ONEOFF_CYCLE            | MONTH_CYCLE              | Recommended Policy | MONTH                  | By Month / Current Month               | CURRENT_MONTH                     | None                                 |
| CRONTAB_CYCLE           | CRONTAB_CYCLE            | Recommended Policy | CRONTAB                | None                                   | CURRENT                           | None                                 |
| HOUR_CYCLE              | HOUR_CYCLE               | Custom             | RANGE_HOUR             | Range (hours)                          | None                              | Comma-separated integers, e.g., -1,0 |
| HOUR_CYCLE              | DAY_CYCLE                | Custom             | RANGE_DAY              | Range (days)                           | None                              | Comma-separated integers, e.g., -1,0 |
| WEEK_CYCLE              | DAY_CYCLE                | Custom             | RANGE_DAY              | Range (days)                           | None                              | Comma-separated integers, e.g., -1,0 |
| HOUR_CYCLE              | MINUTE_CYCLE             | Custom             | RANGE_MINUTE           | Range (minutes)                        | None                              | Comma-separated integers, e.g., -1,0 |
| WEEK_CYCLE              | HOUR_CYCLE               | Custom             | RANGE_HOUR             | Range (hours)                          | None                              | Comma-separated integers, e.g., -1,0 |
| MINUTE_CYCLE            | HOUR_CYCLE               | Custom             | RANGE_HOUR             | Range (hours)                          | None                              | Comma-separated integers, e.g., -1,0 |
| MONTH_CYCLE             | HOUR_CYCLE               | Custom             | RANGE_HOUR             | Range (hours)                          | None                              | Comma-separated integers, e.g., -1,0 |
| MINUTE_CYCLE            | MINUTE_CYCLE             | Custom             | RANGE_MINUTE           | Range (minutes)                        | None                              | Comma-separated integers, e.g., -1,0 |
| YEAR_CYCLE              | MINUTE_CYCLE             | Custom             | RANGE_MINUTE           | Range (minutes)                        | None                              | Comma-separated integers, e.g., -1,0 |
| DAY_CYCLE               | MINUTE_CYCLE             | Custom             | RANGE_MINUTE           | Range (minutes)                        | None                              | Comma-separated integers, e.g., -1,0 |
| MINUTE_CYCLE            | DAY_CYCLE                | Custom             | RANGE_DAY              | Range (days)                           | None                              | Comma-separated integers, e.g., -1,0 |
| YEAR_CYCLE              | HOUR_CYCLE               | Custom             | RANGE_HOUR             | Range (hours)                          | None                              | Comma-separated integers, e.g., -1,0 |
| WEEK_CYCLE              | MINUTE_CYCLE             | Custom             | RANGE_MINUTE           | Range (minutes)                        | None                              | Comma-separated integers, e.g., -1,0 |
| DAY_CYCLE               | HOUR_CYCLE               | Custom             | RANGE_HOUR             | Range (hours)                          | None                              | Comma-separated integers, e.g., -1,0 |
| DAY_CYCLE               | DAY_CYCLE                | Custom             | RANGE_DAY              | Range (days)                           | None                              | Comma-separated integers, e.g., -1,0 |
| MONTH_CYCLE             | DAY_CYCLE                | Custom             | RANGE_DAY              | Range (days)                           | None                              | Comma-separated integers, e.g., -1,0 |
| YEAR_CYCLE              | DAY_CYCLE                | Custom             | RANGE_DAY              | Range (days)                           | None                              | Comma-separated integers, e.g., -1,0 |
| MONTH_CYCLE             | MINUTE_CYCLE             | Custom             | RANGE_MINUTE           | Range (minutes)                        | None                              | Comma-separated integers, e.g., -1,0 |
| HOUR_CYCLE              | HOUR_CYCLE               | Custom             | LIST_HOUR              | List (hours)                           | None                              | Comma-separated integers, e.g., -1,0 |
| HOUR_CYCLE              | DAY_CYCLE                | Custom             | LIST_DAY               | List (days)                            | None                              | Comma-separated integers, e.g., -1,0 |
| WEEK_CYCLE              | DAY_CYCLE                | Custom             | LIST_DAY               | List (days)                            | None                              | Comma-separated integers, e.g., -1,0 |
| HOUR_CYCLE              | MINUTE_CYCLE             | Custom             | LIST_MINUTE            | List (minutes)                         | None                              | Comma-separated integers, e.g., -1,0 |
| WEEK_CYCLE              | HOUR_CYCLE               | Custom             | LIST_HOUR              | List (hours)                           | None                              | Comma-separated integers, e.g., -1,0 |
| MINUTE_CYCLE            | HOUR_CYCLE               | Custom             | LIST_HOUR              | List (hours)                           | None                              | Comma-separated integers, e.g., -1,0 |
| MONTH_CYCLE             | HOUR_CYCLE               | Custom             | LIST_HOUR              | List (hours)                           | None                              | Comma-separated integers, e.g., -1,0 |
| MINUTE_CYCLE            | MINUTE_CYCLE             | Custom             | LIST_MINUTE            | List (minutes)                         | None                              | Comma-separated integers, e.g., -1,0 |
| YEAR_CYCLE              | MINUTE_CYCLE             | Custom             | LIST_MINUTE            | List (minutes)                         | None                              | Comma-separated integers, e.g., -1,0 |
| DAY_CYCLE               | MINUTE_CYCLE             | Custom             | LIST_MINUTE            | List (minutes)                         | None                              | Comma-separated integers, e.g., -1,0 |
| MINUTE_CYCLE            | DAY_CYCLE                | Custom             | LIST_DAY               | List (days)                            | None                              | Comma-separated integers, e.g., -1,0 |
| YEAR_CYCLE              | HOUR_CYCLE               | Custom             | LIST_HOUR              | List (hours)                           | None                              | Comma-separated integers, e.g., -1,0 |
| WEEK_CYCLE              | MINUTE_CYCLE             | Custom             | LIST_MINUTE            | List (minutes)                         | None                              | Comma-separated integers, e.g., -1,0 |
| DAY_CYCLE               | HOUR_CYCLE               | Custom             | LIST_HOUR              | List (hours)                           | None                              | Comma-separated integers, e.g., -1,0 |
| DAY_CYCLE               | DAY_CYCLE                | Custom             | LIST_DAY               | List (days)                            | None                              | Comma-separated integers, e.g., -1,0 |
| MONTH_CYCLE             | DAY_CYCLE                | Custom             | LIST_DAY               | List (days)                            | None                              | Comma-separated integers, e.g., -1,0 |
| YEAR_CYCLE              | DAY_CYCLE                | Custom             | LIST_DAY               | List (days)                            | None                              | Comma-separated integers, e.g., -1,0 |
| MONTH_CYCLE             | MINUTE_CYCLE             | Custom             | LIST_MINUTE            | List (minutes)                         | None                              | Comma-separated integers, e.g., -1,0 |
 * @class
 */
class WorkflowSchedulerConfigurationInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Specifies the time zone.
         * @type {string || null}
         */
        this.ScheduleTimeZone = null;

        /**
         * Period type. Supported types:

ONEOFF_CYCLE: specifies a one-time cycle.
YEAR_CYCLE: specifies the year cycle.
MONTH_CYCLE: specifies the monthly cycle.
WEEK_CYCLE: specifies the week cycle.
DAY_CYCLE: specifies the day cycle.
HOUR_CYCLE: specifies the hour cycle.
MINUTE_CYCLE: specifies the minute cycle.
CRONTAB_CYCLE: specifies the crontab expression type
         * @type {string || null}
         */
        this.CycleType = null;

        /**
         * Self-Dependent. Valid values: parallel, serial, orderly. Default value: serial. 
         * @type {string || null}
         */
        this.SelfDepend = null;

        /**
         * Effective Start Time
         * @type {string || null}
         */
        this.StartTime = null;

        /**
         * Effective End Time
         * @type {string || null}
         */
        this.EndTime = null;

        /**
         * Cron expression
         * @type {string || null}
         */
        this.CrontabExpression = null;

        /**
         * Workflow dependency. Valid values: yes or no.
         * @type {string || null}
         */
        this.DependencyWorkflow = null;

        /**
         * 0: Do not modify
1: Reset the task's upstream dependency configuration to the default value
         * @type {string || null}
         */
        this.ModifyCycleValue = null;

        /**
         * The workflow contains cross-workflow dependencies and uses a cron expression for scheduling. If unified scheduling is saved, unsupported dependencies will be disconnected.
         * @type {boolean || null}
         */
        this.ClearLink = null;

        /**
         * Takes effect when ModifyCycleValue = 1. Indicates the default modification of the upstream dependency time dimension. Valid values are:
* CRONTAB
* DAY
* HOUR
* LIST_DAY
* LIST_HOUR
* LIST_MINUTE
* MINUTE
* MONTH
* RANGE_DAY
* RANGE_HOUR
* RANGE_MINUTE
* WEEK
* YEAR

https://capi.woa.com/object/detail?product=wedata&env=api_dev&version=2025-08-06&name=WorkflowSchedulerConfigurationInfo
         * @type {string || null}
         */
        this.MainCyclicConfig = null;

        /**
         * Takes effect when ModifyCycleValue = 1. Indicates the default modification of the upstream dependency - instance scope. Valid values are:
* ALL_DAY_OF_YEAR
* ALL_MONTH_OF_YEAR
* CURRENT
* CURRENT_DAY
* CURRENT_HOUR
* CURRENT_MINUTE
* CURRENT_MONTH
* CURRENT_WEEK
* CURRENT_YEAR
* PREVIOUS_BEGIN_OF_MONTH
* PREVIOUS_DAY
* PREVIOUS_DAY_LATER_OFFSET_HOUR
* PREVIOUS_DAY_LATER_OFFSET_MINUTE
* PREVIOUS_END_OF_MONTH
* PREVIOUS_FRIDAY
* PREVIOUS_HOUR
* PREVIOUS_HOUR_CYCLE
* PREVIOUS_HOUR_LATER_OFFSET_MINUTE
* PREVIOUS_MINUTE_CYCLE
* PREVIOUS_MONTH
* PREVIOUS_WEEK
* PREVIOUS_WEEKEND
* RECENT_DATE

https://capi.woa.com/object/detail?product=wedata&env=api_dev&version=2025-08-06&name=WorkflowSchedulerConfigurationInfo
         * @type {string || null}
         */
        this.SubordinateCyclicConfig = null;

        /**
         * Execution time left closed interval, for example: 00:00. only required when the CycleType is MINUTE_CYCLE.
         * @type {string || null}
         */
        this.ExecutionStartTime = null;

        /**
         * Execution time right closed interval, for example: 23:59. only required when the CycleType is MINUTE_CYCLE.
         * @type {string || null}
         */
        this.ExecutionEndTime = null;

        /**
         * Whether calendar scheduling is enabled. Valid values: 1 (enabled), 0 (disabled).
         * @type {string || null}
         */
        this.CalendarOpen = null;

        /**
         * Calendar id.
         * @type {string || null}
         */
        this.CalendarId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.ScheduleTimeZone = 'ScheduleTimeZone' in params ? params.ScheduleTimeZone : null;
        this.CycleType = 'CycleType' in params ? params.CycleType : null;
        this.SelfDepend = 'SelfDepend' in params ? params.SelfDepend : null;
        this.StartTime = 'StartTime' in params ? params.StartTime : null;
        this.EndTime = 'EndTime' in params ? params.EndTime : null;
        this.CrontabExpression = 'CrontabExpression' in params ? params.CrontabExpression : null;
        this.DependencyWorkflow = 'DependencyWorkflow' in params ? params.DependencyWorkflow : null;
        this.ModifyCycleValue = 'ModifyCycleValue' in params ? params.ModifyCycleValue : null;
        this.ClearLink = 'ClearLink' in params ? params.ClearLink : null;
        this.MainCyclicConfig = 'MainCyclicConfig' in params ? params.MainCyclicConfig : null;
        this.SubordinateCyclicConfig = 'SubordinateCyclicConfig' in params ? params.SubordinateCyclicConfig : null;
        this.ExecutionStartTime = 'ExecutionStartTime' in params ? params.ExecutionStartTime : null;
        this.ExecutionEndTime = 'ExecutionEndTime' in params ? params.ExecutionEndTime : null;
        this.CalendarOpen = 'CalendarOpen' in params ? params.CalendarOpen : null;
        this.CalendarId = 'CalendarId' in params ? params.CalendarId : null;

    }
}

/**
 * ListOpsAlarmRules request structure.
 * @class
 */
class ListOpsAlarmRulesRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Project ID.
         * @type {string || null}
         */
        this.ProjectId = null;

        /**
         * Page number for pagination. defaults to 1.
         * @type {number || null}
         */
        this.PageNumber = null;

        /**
         * Number of items to display per page, defaults to 20, minimum value 1, maximum value 200.
         * @type {number || null}
         */
        this.PageSize = null;

        /**
         * Monitoring Object Type

Task-level Monitoring - Can be configured by Task / Workflow / Project:
1 = Task (default)
2 = Workflow
3 = Project

Project-level Monitoring - Monitors overall task fluctuations within a project:
7 = Project fluctuation monitoring alarm
         * @type {number || null}
         */
        this.MonitorObjectType = null;

        /**
         * Based on task id, queries Alarm rules.
         * @type {string || null}
         */
        this.TaskId = null;

        /**
         * Alarm Rule Monitoring Types:

failure: Failure alarm

overtime: Timeout alarm

success: Success alarm

backTrackingOrRerunSuccess: Alarm when backfill/rerun succeeds

backTrackingOrRerunFailure: Alarm when backfill/rerun fails

projectFailureInstanceUpwardFluctuationAlarm: Alarm when the upward fluctuation rate of failed instances for the day exceeds the threshold

projectSuccessInstanceDownwardFluctuationAlarm: Alarm when the downward fluctuation rate of successful instances for the day exceeds the threshold

reconciliationFailure: Alarm when an offline reconciliation task fails

reconciliationOvertime: Alarm when an offline reconciliation task runs overtime

reconciliationMismatch: Alarm when the number of mismatched records in reconciliation exceeds the threshold
         * @type {string || null}
         */
        this.AlarmType = null;

        /**
         * Queries Alarm rules configured with corresponding Alarm levels.
Valid values: 1. ordinary, 2. important, 3. critical.
         * @type {number || null}
         */
        this.AlarmLevel = null;

        /**
         * Query the alarm rules associated with the configured alarm recipients.
         * @type {string || null}
         */
        this.AlarmRecipientId = null;

        /**
         * Queries the corresponding Alarm rule based on Alarm rule id or rule name.
         * @type {string || null}
         */
        this.Keyword = null;

        /**
         * Specifies the creator filter for Alarm rule creation.
         * @type {string || null}
         */
        this.CreateUserUin = null;

        /**
         * Start time of the Alarm rule create time range, in the format of 2025-08-17 00:00:00.
         * @type {string || null}
         */
        this.CreateTimeFrom = null;

        /**
         * End time of the Alarm rule creation time range, in the format of "2025-08-26 23:59:59".

         * @type {string || null}
         */
        this.CreateTimeTo = null;

        /**
         * Filters Alarm rules by last update time, in the format of "2025-08-26 00:00:00".

         * @type {string || null}
         */
        this.UpdateTimeFrom = null;

        /**
         * Filters Alarm rules by last update time in the format of "2025-08-26 23:59:59".

         * @type {string || null}
         */
        this.UpdateTimeTo = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.ProjectId = 'ProjectId' in params ? params.ProjectId : null;
        this.PageNumber = 'PageNumber' in params ? params.PageNumber : null;
        this.PageSize = 'PageSize' in params ? params.PageSize : null;
        this.MonitorObjectType = 'MonitorObjectType' in params ? params.MonitorObjectType : null;
        this.TaskId = 'TaskId' in params ? params.TaskId : null;
        this.AlarmType = 'AlarmType' in params ? params.AlarmType : null;
        this.AlarmLevel = 'AlarmLevel' in params ? params.AlarmLevel : null;
        this.AlarmRecipientId = 'AlarmRecipientId' in params ? params.AlarmRecipientId : null;
        this.Keyword = 'Keyword' in params ? params.Keyword : null;
        this.CreateUserUin = 'CreateUserUin' in params ? params.CreateUserUin : null;
        this.CreateTimeFrom = 'CreateTimeFrom' in params ? params.CreateTimeFrom : null;
        this.CreateTimeTo = 'CreateTimeTo' in params ? params.CreateTimeTo : null;
        this.UpdateTimeFrom = 'UpdateTimeFrom' in params ? params.UpdateTimeFrom : null;
        this.UpdateTimeTo = 'UpdateTimeTo' in params ? params.UpdateTimeTo : null;

    }
}

/**
 * CreateWorkflowFolder request structure.
 * @class
 */
class CreateWorkflowFolderRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Project ID.
         * @type {string || null}
         */
        this.ProjectId = null;

        /**
         * Parent folder absolute path, such as /abc/de. if it is the root directory, pass /.
         * @type {string || null}
         */
        this.ParentFolderPath = null;

        /**
         * Specifies the folder name to be created.
         * @type {string || null}
         */
        this.FolderName = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.ProjectId = 'ProjectId' in params ? params.ProjectId : null;
        this.ParentFolderPath = 'ParentFolderPath' in params ? params.ParentFolderPath : null;
        this.FolderName = 'FolderName' in params ? params.FolderName : null;

    }
}

/**
 * GetAlarmMessage response structure.
 * @class
 */
class GetAlarmMessageResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Alarm information.
         * @type {AlarmMessage || null}
         */
        this.Data = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Data) {
            let obj = new AlarmMessage();
            obj.deserialize(params.Data)
            this.Data = obj;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Asynchronous operation details.
 * @class
 */
class OpsAsyncJobDetail extends  AbstractModel {
    constructor(){
        super();

        /**
         * Project ID.
         * @type {string || null}
         */
        this.ProjectId = null;

        /**
         * Operation ID
         * @type {string || null}
         */
        this.AsyncId = null;

        /**
         * Asynchronous operation type.
         * @type {string || null}
         */
        this.AsyncType = null;

        /**
         * Asynchronous operation status: initial status: INIT; Running: RUNNING; Success: SUCCESS; failure: FAIL; partially successful: PART_SUCCESS.
         * @type {string || null}
         */
        this.Status = null;

        /**
         * Error message.


         * @type {string || null}
         */
        this.ErrorDesc = null;

        /**
         * Total sub-processes.
         * @type {number || null}
         */
        this.TotalSubProcessCount = null;

        /**
         * Number of completed sub-processes.

         * @type {number || null}
         */
        this.FinishedSubProcessCount = null;

        /**
         * Count of successful sub-processes.

         * @type {number || null}
         */
        this.SuccessSubProcessCount = null;

        /**
         * Operator id.
         * @type {string || null}
         */
        this.CreateUserUin = null;

        /**
         * Creation time.
         * @type {string || null}
         */
        this.CreateTime = null;

        /**
         * Update time.
         * @type {string || null}
         */
        this.UpdateTime = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.ProjectId = 'ProjectId' in params ? params.ProjectId : null;
        this.AsyncId = 'AsyncId' in params ? params.AsyncId : null;
        this.AsyncType = 'AsyncType' in params ? params.AsyncType : null;
        this.Status = 'Status' in params ? params.Status : null;
        this.ErrorDesc = 'ErrorDesc' in params ? params.ErrorDesc : null;
        this.TotalSubProcessCount = 'TotalSubProcessCount' in params ? params.TotalSubProcessCount : null;
        this.FinishedSubProcessCount = 'FinishedSubProcessCount' in params ? params.FinishedSubProcessCount : null;
        this.SuccessSubProcessCount = 'SuccessSubProcessCount' in params ? params.SuccessSubProcessCount : null;
        this.CreateUserUin = 'CreateUserUin' in params ? params.CreateUserUin : null;
        this.CreateTime = 'CreateTime' in params ? params.CreateTime : null;
        this.UpdateTime = 'UpdateTime' in params ? params.UpdateTime : null;

    }
}

/**
 * CreateResourceFolder request structure.
 * @class
 */
class CreateResourceFolderRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Project ID.
         * @type {string || null}
         */
        this.ProjectId = null;

        /**
         * Parent folder's absolute path. Example: /wedata/test. Use / to represent the root directory.
         * @type {string || null}
         */
        this.ParentFolderPath = null;

        /**
         * Folder name.
         * @type {string || null}
         */
        this.FolderName = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.ProjectId = 'ProjectId' in params ? params.ProjectId : null;
        this.ParentFolderPath = 'ParentFolderPath' in params ? params.ParentFolderPath : null;
        this.FolderName = 'FolderName' in params ? params.FolderName : null;

    }
}

/**
 * Updates the basic attribute information of the task.
 * @class
 */
class UpdateTaskBaseAttribute extends  AbstractModel {
    constructor(){
        super();

        /**
         * Task name.
         * @type {string || null}
         */
        this.TaskName = null;

        /**
         * Task owner ID.
         * @type {string || null}
         */
        this.OwnerUin = null;

        /**
         * Task description
         * @type {string || null}
         */
        this.TaskDescription = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TaskName = 'TaskName' in params ? params.TaskName : null;
        this.OwnerUin = 'OwnerUin' in params ? params.OwnerUin : null;
        this.TaskDescription = 'TaskDescription' in params ? params.TaskDescription : null;

    }
}

/**
 * DeleteResourceFolder request structure.
 * @class
 */
class DeleteResourceFolderRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Project ID.
         * @type {string || null}
         */
        this.ProjectId = null;

        /**
         * Folder ID. obtain through the ListResourceFolders API.
         * @type {string || null}
         */
        this.FolderId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.ProjectId = 'ProjectId' in params ? params.ProjectId : null;
        this.FolderId = 'FolderId' in params ? params.FolderId : null;

    }
}

/**
 * UpdateCodeFolder response structure.
 * @class
 */
class UpdateCodeFolderResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Execution result
         * @type {CodeStudioFolderActionResult || null}
         */
        this.Data = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Data) {
            let obj = new CodeStudioFolderActionResult();
            obj.deserialize(params.Data)
            this.Data = obj;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * GetOpsTaskCode request structure.
 * @class
 */
class GetOpsTaskCodeRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Project id.
         * @type {string || null}
         */
        this.ProjectId = null;

        /**
         * Task ID
         * @type {string || null}
         */
        this.TaskId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.ProjectId = 'ProjectId' in params ? params.ProjectId : null;
        this.TaskId = 'TaskId' in params ? params.TaskId : null;

    }
}

/**
 * UpdateResourceFile request structure.
 * @class
 */
class UpdateResourceFileRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Project ID.
         * @type {string || null}
         */
        this.ProjectId = null;

        /**
         * Resource file ID. Can be obtained through the ListResourceFiles API.
         * @type {string || null}
         */
        this.ResourceId = null;

        /**
         * -Upload file and manual entry are two methods, choose one. if both are provided, the sequence is file > manual entry.
-The hand-filled value must be an existing cos path. /datastudio/resource/ is the fixed prefix. projectId is the project ID and requires a specific value. parentFolderPath is the parent folder path. name is the file name. 
Hand-filled value example:.
   /datastudio/resource/projectId/parentFolderPath/name 

         * @type {string || null}
         */
        this.ResourceFile = null;

        /**
         * Resource name, preferably kept consistent with the file name.
         * @type {string || null}
         */
        this.ResourceName = null;

        /**
         * Bundle Client ID.
         * @type {string || null}
         */
        this.BundleId = null;

        /**
         * Bundle Client Name
         * @type {string || null}
         */
        this.BundleInfo = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.ProjectId = 'ProjectId' in params ? params.ProjectId : null;
        this.ResourceId = 'ResourceId' in params ? params.ResourceId : null;
        this.ResourceFile = 'ResourceFile' in params ? params.ResourceFile : null;
        this.ResourceName = 'ResourceName' in params ? params.ResourceName : null;
        this.BundleId = 'BundleId' in params ? params.BundleId : null;
        this.BundleInfo = 'BundleInfo' in params ? params.BundleInfo : null;

    }
}

/**
 * CreateResourceFolder response structure.
 * @class
 */
class CreateResourceFolderResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Creation result of the folder. Error will be reported if failed to create.
         * @type {CreateFolderResult || null}
         */
        this.Data = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Data) {
            let obj = new CreateFolderResult();
            obj.deserialize(params.Data)
            this.Data = obj;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Task extension information parameter.
 * @class
 */
class TaskExtParameter extends  AbstractModel {
    constructor(){
        super();

        /**
         * Parameter name.


         * @type {string || null}
         */
        this.ParamKey = null;

        /**
         * Parameter value.


         * @type {string || null}
         */
        this.ParamValue = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.ParamKey = 'ParamKey' in params ? params.ParamKey : null;
        this.ParamValue = 'ParamValue' in params ? params.ParamValue : null;

    }
}

/**
 * Data exploration JOB.
 * @class
 */
class JobDto extends  AbstractModel {
    constructor(){
        super();

        /**
         * Task ID of the data exploration.

         * @type {string || null}
         */
        this.JobId = null;

        /**
         * Task name.
         * @type {string || null}
         */
        this.JobName = null;

        /**
         * Task type
         * @type {string || null}
         */
        this.JobType = null;

        /**
         * Script ID
         * @type {string || null}
         */
        this.ScriptId = null;

        /**
         * Subtask List
         * @type {Array.<JobExecutionDto> || null}
         */
        this.JobExecutionList = null;

        /**
         * Specifies the script content.
         * @type {string || null}
         */
        this.ScriptContent = null;

        /**
         * State of a task.
         * @type {string || null}
         */
        this.Status = null;

        /**
         * Task creation time
         * @type {string || null}
         */
        this.CreateTime = null;

        /**
         * Update time.
         * @type {string || null}
         */
        this.UpdateTime = null;

        /**
         * End time.

         * @type {string || null}
         */
        this.EndTime = null;

        /**
         * Root account UIN.
         * @type {string || null}
         */
        this.OwnerUin = null;

        /**
         * Account UIN.
         * @type {string || null}
         */
        this.UserUin = null;

        /**
         * Duration. specifies the time taken.

         * @type {number || null}
         */
        this.TimeCost = null;

        /**
         * Specifies whether the script content is truncated.

         * @type {boolean || null}
         */
        this.ScriptContentTruncate = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.JobId = 'JobId' in params ? params.JobId : null;
        this.JobName = 'JobName' in params ? params.JobName : null;
        this.JobType = 'JobType' in params ? params.JobType : null;
        this.ScriptId = 'ScriptId' in params ? params.ScriptId : null;

        if (params.JobExecutionList) {
            this.JobExecutionList = new Array();
            for (let z in params.JobExecutionList) {
                let obj = new JobExecutionDto();
                obj.deserialize(params.JobExecutionList[z]);
                this.JobExecutionList.push(obj);
            }
        }
        this.ScriptContent = 'ScriptContent' in params ? params.ScriptContent : null;
        this.Status = 'Status' in params ? params.Status : null;
        this.CreateTime = 'CreateTime' in params ? params.CreateTime : null;
        this.UpdateTime = 'UpdateTime' in params ? params.UpdateTime : null;
        this.EndTime = 'EndTime' in params ? params.EndTime : null;
        this.OwnerUin = 'OwnerUin' in params ? params.OwnerUin : null;
        this.UserUin = 'UserUin' in params ? params.UserUin : null;
        this.TimeCost = 'TimeCost' in params ? params.TimeCost : null;
        this.ScriptContentTruncate = 'ScriptContentTruncate' in params ? params.ScriptContentTruncate : null;

    }
}

/**
 * Offline integration reconciliation Alarm rule.
 * @class
 */
class ReconciliationStrategyInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Offline Integration Task Reconciliation Alarms

reconciliationFailure: Alarm when offline reconciliation task fails

reconciliationOvertime: Alarm when offline reconciliation task runs overtime

reconciliationMismatch: Alarm when the number of mismatched records in reconciliation exceeds the threshold
         * @type {string || null}
         */
        this.RuleType = null;

        /**
         * Reconciliation Mismatch Threshold - Required when RuleType = reconciliationMismatch. Specifies the threshold for the number of mismatched records in reconciliation. No default value.
         * @type {number || null}
         */
        this.MismatchCount = null;

        /**
         * Task run timeout threshold for reconciliation: hr, defaults to 0.
         * @type {number || null}
         */
        this.Hour = null;

        /**
         * Reconciliation task timeout threshold: minutes, defaults to 1.
         * @type {number || null}
         */
        this.Min = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RuleType = 'RuleType' in params ? params.RuleType : null;
        this.MismatchCount = 'MismatchCount' in params ? params.MismatchCount : null;
        this.Hour = 'Hour' in params ? params.Hour : null;
        this.Min = 'Min' in params ? params.Min : null;

    }
}

/**
 * DeleteResourceFile response structure.
 * @class
 */
class DeleteResourceFileResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Specifies the resource deletion result.
         * @type {DeleteResourceFileResult || null}
         */
        this.Data = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Data) {
            let obj = new DeleteResourceFileResult();
            obj.deserialize(params.Data)
            this.Data = obj;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

module.exports = {
    CreateTaskResult: CreateTaskResult,
    ListDownstreamOpsTasksRequest: ListDownstreamOpsTasksRequest,
    RerunTaskInstancesAsyncResponse: RerunTaskInstancesAsyncResponse,
    UpdateCodeFileRequest: UpdateCodeFileRequest,
    ListAlarmMessages: ListAlarmMessages,
    CreateResourceFileRequest: CreateResourceFileRequest,
    TaskBaseAttribute: TaskBaseAttribute,
    UpdateTaskRequest: UpdateTaskRequest,
    ListDownstreamTaskInstancesResponse: ListDownstreamTaskInstancesResponse,
    ResourceFolder: ResourceFolder,
    UpdateWorkflowFolderResponse: UpdateWorkflowFolderResponse,
    UpdateWorkflowFolderRequest: UpdateWorkflowFolderRequest,
    ListTaskVersionsRequest: ListTaskVersionsRequest,
    GetCodeFileRequest: GetCodeFileRequest,
    ResourceFileItem: ResourceFileItem,
    UpdateTaskBrief: UpdateTaskBrief,
    ListOpsWorkflowsRequest: ListOpsWorkflowsRequest,
    CreateWorkflowFolderResponse: CreateWorkflowFolderResponse,
    WorkflowInfo: WorkflowInfo,
    StopSQLScriptRunResponse: StopSQLScriptRunResponse,
    ListOpsTasksResponse: ListOpsTasksResponse,
    ListTaskVersionsResponse: ListTaskVersionsResponse,
    ResourceFolderPage: ResourceFolderPage,
    UpdateOpsTasksOwnerResponse: UpdateOpsTasksOwnerResponse,
    ListDownstreamTasksResponse: ListDownstreamTasksResponse,
    DeleteWorkflowResponse: DeleteWorkflowResponse,
    OpsWorkflows: OpsWorkflows,
    ListOpsAlarmRulesResponse: ListOpsAlarmRulesResponse,
    CreateCodeFileResponse: CreateCodeFileResponse,
    UpdateOpsTasksOwnerRequest: UpdateOpsTasksOwnerRequest,
    DeleteResourceFolderResponse: DeleteResourceFolderResponse,
    KVMap: KVMap,
    ListWorkflowInfo: ListWorkflowInfo,
    ListResourceFilesResponse: ListResourceFilesResponse,
    ListDownstreamTaskInstancesRequest: ListDownstreamTaskInstancesRequest,
    ListTaskInstanceExecutionsRequest: ListTaskInstanceExecutionsRequest,
    ListUpstreamOpsTasksResponse: ListUpstreamOpsTasksResponse,
    DeleteTaskRequest: DeleteTaskRequest,
    UpdateWorkflowResponse: UpdateWorkflowResponse,
    NotebookSessionInfo: NotebookSessionInfo,
    ListOpsTasksPage: ListOpsTasksPage,
    DeleteWorkflowRequest: DeleteWorkflowRequest,
    CreateOpsAlarmRuleResponse: CreateOpsAlarmRuleResponse,
    DeleteOpsAlarmRuleResponse: DeleteOpsAlarmRuleResponse,
    GetTaskRequest: GetTaskRequest,
    ModifyAlarmRuleResult: ModifyAlarmRuleResult,
    AlarmMessage: AlarmMessage,
    ListResourceFilesRequest: ListResourceFilesRequest,
    GetOpsAlarmRuleResponse: GetOpsAlarmRuleResponse,
    UpdateTaskResult: UpdateTaskResult,
    GetResourceFileRequest: GetResourceFileRequest,
    UpdateTasksOwner: UpdateTasksOwner,
    TaskInstancePage: TaskInstancePage,
    GetOpsAsyncJobRequest: GetOpsAsyncJobRequest,
    DeleteCodeFolderResponse: DeleteCodeFolderResponse,
    PauseOpsTasksAsyncRequest: PauseOpsTasksAsyncRequest,
    TaskInstanceExecutions: TaskInstanceExecutions,
    UpdateResourceFileResult: UpdateResourceFileResult,
    SqlCreateResult: SqlCreateResult,
    UpdateResourceFileResponse: UpdateResourceFileResponse,
    CreateWorkflowRequest: CreateWorkflowRequest,
    AlarmWayWebHook: AlarmWayWebHook,
    TaskSchedulingParameter: TaskSchedulingParameter,
    CreateAlarmRuleData: CreateAlarmRuleData,
    SubmitTaskRequest: SubmitTaskRequest,
    InstanceLog: InstanceLog,
    GetResourceFileResponse: GetResourceFileResponse,
    CreateResourceFileResult: CreateResourceFileResult,
    UpdateSQLFolderRequest: UpdateSQLFolderRequest,
    BackfillInstance: BackfillInstance,
    ListUpstreamTaskInstancesResponse: ListUpstreamTaskInstancesResponse,
    CreateSQLFolderRequest: CreateSQLFolderRequest,
    UpdateWorkflowRequest: UpdateWorkflowRequest,
    KVPair: KVPair,
    GetOpsTaskResponse: GetOpsTaskResponse,
    SQLScriptConfig: SQLScriptConfig,
    JobExecutionDto: JobExecutionDto,
    CreateTaskSchedulerConfiguration: CreateTaskSchedulerConfiguration,
    CreateCodeFolderResponse: CreateCodeFolderResponse,
    ListUpstreamTaskInstancesRequest: ListUpstreamTaskInstancesRequest,
    CodeFolderNode: CodeFolderNode,
    UpdateOpsAlarmRuleResponse: UpdateOpsAlarmRuleResponse,
    UpdateSQLScriptResponse: UpdateSQLScriptResponse,
    SQLContentActionResult: SQLContentActionResult,
    CreateFolderResult: CreateFolderResult,
    SQLStopResult: SQLStopResult,
    ListWorkflowsRequest: ListWorkflowsRequest,
    RunSQLScriptRequest: RunSQLScriptRequest,
    ListDownstreamOpsTasksResponse: ListDownstreamOpsTasksResponse,
    TaskInstanceDetail: TaskInstanceDetail,
    ListTaskInstancesResponse: ListTaskInstancesResponse,
    UpdateResourceFolderResponse: UpdateResourceFolderResponse,
    SubmitTaskResult: SubmitTaskResult,
    ListSQLScriptRunsRequest: ListSQLScriptRunsRequest,
    CreateDataBackfillPlanRequest: CreateDataBackfillPlanRequest,
    GetTaskInstanceRequest: GetTaskInstanceRequest,
    TaskDependDto: TaskDependDto,
    ListUpstreamTasksResponse: ListUpstreamTasksResponse,
    DeleteWorkflowFolderRequest: DeleteWorkflowFolderRequest,
    ListSQLFolderContentsRequest: ListSQLFolderContentsRequest,
    RunSQLScriptResponse: RunSQLScriptResponse,
    DeleteSQLScriptRequest: DeleteSQLScriptRequest,
    GetOpsAlarmRuleRequest: GetOpsAlarmRuleRequest,
    ListTasksResponse: ListTasksResponse,
    GetOpsTaskCodeResponse: GetOpsTaskCodeResponse,
    ListWorkflowsResponse: ListWorkflowsResponse,
    CreateTaskRequest: CreateTaskRequest,
    ProjectInstanceStatisticsAlarmInfo: ProjectInstanceStatisticsAlarmInfo,
    ListCodeFolderContentsResponse: ListCodeFolderContentsResponse,
    GetTaskCodeResponse: GetTaskCodeResponse,
    InTaskParameter: InTaskParameter,
    DeleteResourceFileResult: DeleteResourceFileResult,
    UpdateTaskResponse: UpdateTaskResponse,
    DeleteSQLFolderResponse: DeleteSQLFolderResponse,
    GetTaskVersionResponse: GetTaskVersionResponse,
    ListResourceFoldersResponse: ListResourceFoldersResponse,
    GetSQLScriptResponse: GetSQLScriptResponse,
    TaskVersionDetail: TaskVersionDetail,
    UpdateFolderResult: UpdateFolderResult,
    ListAlarmMessagesRequest: ListAlarmMessagesRequest,
    UpdateCodeFileResponse: UpdateCodeFileResponse,
    GetOpsWorkflowRequest: GetOpsWorkflowRequest,
    CreateOpsAlarmRuleRequest: CreateOpsAlarmRuleRequest,
    ListSQLScriptRunsResponse: ListSQLScriptRunsResponse,
    Task: Task,
    NotificationFatigue: NotificationFatigue,
    TaskDataRegistry: TaskDataRegistry,
    GetTaskInstanceLogRequest: GetTaskInstanceLogRequest,
    SetSuccessTaskInstancesAsyncResponse: SetSuccessTaskInstancesAsyncResponse,
    TaskCodeResult: TaskCodeResult,
    UpdateSQLScriptRequest: UpdateSQLScriptRequest,
    SetSuccessTaskInstancesAsyncRequest: SetSuccessTaskInstancesAsyncRequest,
    TaskCode: TaskCode,
    StopOpsTasksAsyncRequest: StopOpsTasksAsyncRequest,
    ListAlarmMessagesResponse: ListAlarmMessagesResponse,
    ParamInfo: ParamInfo,
    CodeStudioFolderResult: CodeStudioFolderResult,
    GetOpsTaskRequest: GetOpsTaskRequest,
    DeleteAlarmRuleResult: DeleteAlarmRuleResult,
    DeleteTaskResult: DeleteTaskResult,
    DeleteResourceFileRequest: DeleteResourceFileRequest,
    ListWorkflowFoldersResponse: ListWorkflowFoldersResponse,
    CreateSQLScriptResponse: CreateSQLScriptResponse,
    AlarmQuietInterval: AlarmQuietInterval,
    CodeFile: CodeFile,
    ListTasksRequest: ListTasksRequest,
    OpsAsyncResponse: OpsAsyncResponse,
    CreateWorkflowResult: CreateWorkflowResult,
    ListResourceFoldersRequest: ListResourceFoldersRequest,
    ResourceFile: ResourceFile,
    ListTaskVersions: ListTaskVersions,
    OpsWorkflow: OpsWorkflow,
    GetWorkflowResponse: GetWorkflowResponse,
    ListUpstreamTasksRequest: ListUpstreamTasksRequest,
    GetTaskCodeRequest: GetTaskCodeRequest,
    GetTaskResponse: GetTaskResponse,
    DeleteCodeFolderRequest: DeleteCodeFolderRequest,
    KillTaskInstancesAsyncRequest: KillTaskInstancesAsyncRequest,
    CodeStudioFileActionResult: CodeStudioFileActionResult,
    CreateSQLScriptRequest: CreateSQLScriptRequest,
    WorkflowFolder: WorkflowFolder,
    ListDataBackfillInstancesRequest: ListDataBackfillInstancesRequest,
    UpdateResourceFolderRequest: UpdateResourceFolderRequest,
    CodeStudioFolderActionResult: CodeStudioFolderActionResult,
    ListOpsWorkflowsResponse: ListOpsWorkflowsResponse,
    EventListener: EventListener,
    BackfillInstanceCollection: BackfillInstanceCollection,
    UpdateSQLFolderResponse: UpdateSQLFolderResponse,
    InstanceExecutionPhase: InstanceExecutionPhase,
    GetAlarmMessageRequest: GetAlarmMessageRequest,
    CreateSQLFolderResponse: CreateSQLFolderResponse,
    ListCodeFolderContentsRequest: ListCodeFolderContentsRequest,
    GetWorkflowRequest: GetWorkflowRequest,
    OpsWorkflowDetail: OpsWorkflowDetail,
    DeleteWorkflowResult: DeleteWorkflowResult,
    TaskSchedulerConfiguration: TaskSchedulerConfiguration,
    GetTaskInstanceResponse: GetTaskInstanceResponse,
    ListDataBackfillInstancesResponse: ListDataBackfillInstancesResponse,
    ListUpstreamOpsTasksRequest: ListUpstreamOpsTasksRequest,
    UpdateOpsAlarmRuleRequest: UpdateOpsAlarmRuleRequest,
    ListSQLFolderContentsResponse: ListSQLFolderContentsResponse,
    ListWorkflowFoldersRequest: ListWorkflowFoldersRequest,
    DependencyConfigPage: DependencyConfigPage,
    DeleteFolderResult: DeleteFolderResult,
    CreateResourceFileResponse: CreateResourceFileResponse,
    TaskConfiguration: TaskConfiguration,
    DeleteWorkflowFolderResponse: DeleteWorkflowFolderResponse,
    ListTaskInstancesRequest: ListTaskInstancesRequest,
    CodeFileConfig: CodeFileConfig,
    ListAlarmRulesResult: ListAlarmRulesResult,
    DeleteSQLScriptResponse: DeleteSQLScriptResponse,
    StopSQLScriptRunRequest: StopSQLScriptRunRequest,
    ListOpsTasksRequest: ListOpsTasksRequest,
    AlarmRuleData: AlarmRuleData,
    CreateCodeFileRequest: CreateCodeFileRequest,
    ChildDependencyConfigPage: ChildDependencyConfigPage,
    SQLFolderNode: SQLFolderNode,
    TaskVersion: TaskVersion,
    GetCodeFileResponse: GetCodeFileResponse,
    CreateTaskConfiguration: CreateTaskConfiguration,
    GetOpsWorkflowResponse: GetOpsWorkflowResponse,
    UpdateWorkflowResult: UpdateWorkflowResult,
    ListTaskInstanceExecutionsResponse: ListTaskInstanceExecutionsResponse,
    ParentDependencyConfigPage: ParentDependencyConfigPage,
    SubmitTaskResponse: SubmitTaskResponse,
    WorkflowFolderPage: WorkflowFolderPage,
    AlarmRuleDetail: AlarmRuleDetail,
    RerunTaskInstancesAsyncRequest: RerunTaskInstancesAsyncRequest,
    ListTaskInfo: ListTaskInfo,
    DataBackfillRange: DataBackfillRange,
    CreateTaskResponse: CreateTaskResponse,
    WorkflowSchedulerConfiguration: WorkflowSchedulerConfiguration,
    GetSQLScriptRequest: GetSQLScriptRequest,
    CreateDataBackfillPlanResponse: CreateDataBackfillPlanResponse,
    DeleteCodeFileResponse: DeleteCodeFileResponse,
    InstanceExecution: InstanceExecution,
    TaskInstance: TaskInstance,
    TaskOpsInfo: TaskOpsInfo,
    DependencyStrategyTask: DependencyStrategyTask,
    SQLScript: SQLScript,
    CreateTaskBaseAttribute: CreateTaskBaseAttribute,
    CreateDataReplenishmentPlan: CreateDataReplenishmentPlan,
    KillTaskInstancesAsyncResponse: KillTaskInstancesAsyncResponse,
    StopOpsTasksAsyncResponse: StopOpsTasksAsyncResponse,
    PauseOpsTasksAsyncResponse: PauseOpsTasksAsyncResponse,
    CreateWorkflowResponse: CreateWorkflowResponse,
    TimeOutStrategyInfo: TimeOutStrategyInfo,
    DeleteTaskResponse: DeleteTaskResponse,
    GetTaskInstanceLogResponse: GetTaskInstanceLogResponse,
    AlarmGroup: AlarmGroup,
    OpsTaskDepend: OpsTaskDepend,
    ListDownstreamTasksRequest: ListDownstreamTasksRequest,
    OutTaskParameter: OutTaskParameter,
    DeleteOpsAlarmRuleRequest: DeleteOpsAlarmRuleRequest,
    GetTaskVersionRequest: GetTaskVersionRequest,
    GetOpsAsyncJobResponse: GetOpsAsyncJobResponse,
    CreateCodeFolderRequest: CreateCodeFolderRequest,
    DeleteSQLFolderRequest: DeleteSQLFolderRequest,
    DeleteCodeFileRequest: DeleteCodeFileRequest,
    DependencyTaskBrief: DependencyTaskBrief,
    WorkflowDetail: WorkflowDetail,
    UpdateCodeFolderRequest: UpdateCodeFolderRequest,
    ResourceFilePage: ResourceFilePage,
    WorkflowSchedulerConfigurationInfo: WorkflowSchedulerConfigurationInfo,
    ListOpsAlarmRulesRequest: ListOpsAlarmRulesRequest,
    CreateWorkflowFolderRequest: CreateWorkflowFolderRequest,
    GetAlarmMessageResponse: GetAlarmMessageResponse,
    OpsAsyncJobDetail: OpsAsyncJobDetail,
    CreateResourceFolderRequest: CreateResourceFolderRequest,
    UpdateTaskBaseAttribute: UpdateTaskBaseAttribute,
    DeleteResourceFolderRequest: DeleteResourceFolderRequest,
    UpdateCodeFolderResponse: UpdateCodeFolderResponse,
    GetOpsTaskCodeRequest: GetOpsTaskCodeRequest,
    UpdateResourceFileRequest: UpdateResourceFileRequest,
    CreateResourceFolderResponse: CreateResourceFolderResponse,
    TaskExtParameter: TaskExtParameter,
    JobDto: JobDto,
    ReconciliationStrategyInfo: ReconciliationStrategyInfo,
    DeleteResourceFileResponse: DeleteResourceFileResponse,

}
